在 C 语言 中,如果一个 指针 不指向任何数据,我们就称之为空指针,用 NULL 表示。注意,NULL 是区分大小写的,即 NULL 不能写成 null。
我们在定义指针时或者再指针使用完毕,不再使用时,一定推荐将指针设置为 NULL,表明该指针不再指向任何数据。
#define NULL ((void *)0)
(void *)0
表示把数值 0 强制转换为 void *
类型,最外层的 ( ) 把 宏定义 的内容括起来,我们自己进行宏定义时也推荐这么做,防止发生歧义。
NULL 定义在 stdio.h
头文件中。
NULL 指针表明不指向任何数据
#include <stdio.h>
int main()
{
printf("嗨客网(www.haicoder.net)\n\n");
int *pa;
printf("pa = %p\n", pa);
return 0;
}
程序运行后,控制台输出如下图所示:
我们定义了一个指针,该指针没有进行任何的初始化,接着,我们打印了该指针变量的值,我们发现,并不是 0,而是一个随机数,这是因为,我们定义了指针如果不初始化,那么就是任意的值。现在,修改程序如下:
#include <stdio.h>
int main()
{
printf("嗨客网(www.haicoder.net)\n\n");
int *pa = NULL;
printf("pa = %p\n", pa);
return 0;
}
程序运行后,控制台输出如下图所示:
这次,我们显式的将指针变量 pa 赋值为了 NULL,此时,我们再打印变量 pa 的值,发现,此时指针变量 pa 的值为 0。
在 C 语言中,如果一个指针不指向任何数据,我们就称之为空指针,用 NULL 表示。注意,NULL 是区分大小写的,即 NULL 不能写成 null。
我们在定义指针时或者再指针使用完毕,不再使用时,一定推荐将指针设置为 NULL,表明该指针不再指向任何数据。