可能的重复:
C 中的 NULL 总是为零吗?
以下代码:
char *p1 = 0;
char *p2 = NULL;
char *p3 = (char *)0;
if (NULL == 0)
printf("the NULL is same as 0\n");
printf("0 : %s\n", 0);
printf("p1 : %s\n", p1);
printf("p1 : %x\n", p1);
printf("&p1 : %x\n", &p1);
printf("NULL : %s\n", NULL);
printf("p2 : %s\n", p2);
printf("p2 : %x\n", p2);
printf("&p2 : %x\n", &p2);
printf("*p2 : %s\n", *p2);
输出:
the NULL is same as 0
0 : (null)
p1 : (null)
p1 : 0
&p1 : bf9a0204
NULL : (null)
p2 : (null)
p2 : 0
&p2 : bf9a0208
Segmentation fault (core dumped)
我想知道:
(null) 代表什么?
指针 p1 或 p2 是否指向地址 0x0?
语句是否 printf("p1 : %x\n", p1); 输出 p1 : 0 表示 p1 指向地址 0x0?