NULL的含义是什么

来源:百度知道 编辑:UC知道 时间:2024/06/17 23:15:09
是空值
还是未知的值

NULL的 英文意思是 “没有东西”“空”
C 语言中 是 宏 定义。

#include <stdio.h> 里是:

#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif

意思是:
如果前面已定义了 NULL 则不 改变它,完毕。
如果前面没有定义NULL 但是 定义了 __cplusplus (C++) 则 定义 为 0,完毕。
如果前面没有定义NULL 也 没有 定义 __cplusplus ,则定义 为 ((void *)0),完毕。

其他头文件也可以重新定义NULL
----------
到底NULL是什么,取决于程序包含的头文件。

当然,你自己也可以定义它:
#define NULL 0

----------
一般来说,NULL 可能是 0, 也可能是 ((void *)0)

我来个准确的回答吧。

首先说一下什么是指针,只要明白了指针的含义,你就明白null的含义了。

假设 有语句 int a=10;

那么编译器就在内存中开辟1个整型单元存放变量a,我们假设这个整型单元在内存中的地址是 0x1000;那么内存0x1000单元中存放了数据10,每次我们访问a的时候,实际上都是访问的0x1000单元中的10.

现在定义: int *p;
p=&a;

当编译器遇到语句int *p时,它也会在内存中给指针变量p分配一个内存单元,假设这个单元在内存的编址为0x1003;此时,0x1003中的值是不确定的,(因为我们没有给指针赋值),当编译器遇到了p=&a时,就会在0x1003单元中保存0x1000,请看,这就是说:(指针变量p代表的)内存单元0x1003存放了变量a