重複の可能性:
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)
私は疑問に思う:
(ヌル)は何を表していますか?
ポインタ p1 または p2 はアドレス 0x0 を指していますか?
ステートメント printf("p1 : %x\n", p1); を実行しますか? 出力 p1 : 0 は、p1 がアドレス 0x0 を指していることを示しますか?