目录
指针
内存如何编址?
如何对变量进行寻址?
用什么类型的变量来存放变量的地址?
如何显示变量的地址?编辑
使用未初始化的指针会怎样?
NULL是什么?
如何访问指针变量指向的存储单元中的数据?
指针变量的定义和初始化
指针
指针(
Pointer
)是“稀饭(
C Fans
)”最挚爱的武器
C
的高效、高能主要来自于指针
很多“
Mission Impossible”
由指针完成
大多数语言都有无数的“不可能”
而
C
语言是
“一切皆有可能”
——
“Impossible is Nothing” ——
是谁惹的祸?
几乎全是由指针和数组引起的非法内存访问导致的
黑客攻击服务器利用的
bug
绝大部分都是指针和数组造成的
理解指针要从变量的地址谈起
内存如何编址?
如何对变量进行寻址?
用什么类型的变量来存放变量的地址?
指针(
Pointer
)类型
指针变量
——
具有指针类型的变量
保存
32
位地址值
——sizeof(pa)
是
4
个字节
用什么数据类型去理解它所指向的存储单元中的数据呢?
如何显示变量的地址?
使用未初始化的指针会怎样?
指针变量使用之前必须初始化
若你不知把它指向哪里,那就指向
NULL
(在
stdio.h
中定义为
0
)
NULL是什么?
空
指针
——
值为
NULL
的指针,即无效指针
问题:
p = 0
和
p = NULL
有什么区别吗?
p = NULL
可以明确地说明
p
是指针变量,而不是一个数值型变量
问题:空指针就是指向地址为
0
的存储单元的指针吗?
答案:不一定
并非所有编译器都使用
0
地址
某些编译器为空指针使用
不存在的内存地址
如何访问指针变量指向的存储单元中的数据?
通过
间接寻址运算符
访问(引用)指针变量指向的变量的值
——
指针的解引用
(Pointer Dereference)