空指针
NULL是一个宏,是C语言中的保留值,空指针指的是指针变量指向NULL,空指针表明指针指向的地址是不可读取也不可以写入的。C语言标准库中对NULL的定义如下:
#define NULL ((void *)0)
上述定义表明,NULL是((void)0)的宏定义,定义指针赋值为NULL与赋值为((vod) 0)是相同的,都指向同一块地址空间。下面通过一个案例演示空指针的定义,具体如例1所示。
例1 nullPointer.c
1 #include <stdio.h>
2 int main()
3 {
4 int* p = NULL;
5 int* pp=((void*) 0);
6 printf("空指针的值p为:%p\n", p);
7 printf("空指针的值pp为:%p\n",pp);
8 return 0;
9 }
例1的运行结果如图1所示。
图1 例1运行结果
由图1可知,空指针p和pp指向了内存空间地址为0的区域,0地址是一个特殊的地址空间。在程序中,有时可能需要用到指针,但是又不确定指针在何时何处使用,可以先使定义好的指针指向空。