1.指针是变量。实质:单元的地址就是指针内容。
系统为指针分配内存空间;
指针有自己的地址;
指针能够存值,但这个值比较特殊———地址。
2.指针,是一个无符号整数(unsigned int),它是一个以当前系统寻址范围为取值范围的整数。32位系统下寻址能力(地址空间)是4G-byte(0~2^32-1)二进制表示长度为32bit(也就是4B)。
3.指针的类型和指针所指向的类型
int *ptr; //指针类型是int* 指针所指向的类型是int
char *ptr //指针类型是char* 指针所指向的类型是char
int **ptr //指针类型是int** 指针所指向的类型是int*
int (*ptr)[3]; //指针类型是int (*)【3】 指针所指向的类型是 int()[3]
int *(*ptr)4; //指针类型是int*(*)[4] 指针所指向的类型是int *()[4]
4.空指针NULL
它并不指向任何对象,这种指针被称为空指针。
空指针的值是 NULL,NULL是在“stddef.h”中定义的一个宏,它的值和任何有效指针的值都不同。NULL是一个纯粹的0,它可能会被强制转换成“void”或“char”类型,即NULL可能是0、0L或(void*)0等。
指针的值不能是整形值,但空指针是个例外,即空指针的值可以是一个纯粹的0,空指针的值并不必须是一个纯粹的0,但这个值是唯一有用的值。
警告:绝不能间接引用空指针,否则,你的程序可能会得到一个毫无意义的结果,或者得到一个全部等于0的值,否则会忽然停止运行。
5.空指针的使用
(1)用空指针终止对递归函数的间接引用,递归是指一个事物本身来定义。
(2)用空指针进行函数调用失败时的返回值。
(3)空指针作警戒值。