在c语言中,存在各种各样的“零”。例如:0,‘0’,NULL等。下面我们就具体介绍一下这些”零“:
零的含义
零值 | 意义 | 备注 |
---|---|---|
0 | 整型数据的0 | |
0.0 | 实型数据的0 | |
NULL | 指针型数据的0 | 内存的0地址,用于初始化暂时不用的指针。或是标识已经被释放堆内存的指针。 |
‘\0’ | 转义字符型(ASCII值为0) | 非可打印字符,用于标识字符串结束标记。 |
‘0’ | 字符型(ASCII值为48) | 可打印字符,用于打印字符0 |
“0” | 字符串型 | 包含两个ASCII值40和0 |
在上述这些零中,其他的都好理解。令人困惑的恐怕就是0与NULL的关系了吧!下面,我们就主要来介绍以下这两个令人迷惑的东西。
0与NULL
首先我们先用一段c代码来测试两者之间的关系:
#include <stdio.h>
int main()
{
int *p = NULL;
printf("%p\n",p);
return 0;
}
在linux下,使用gdb单步调试,结果如下: