【发布时间】:2019-08-06 10:02:13
【问题描述】:
为什么我不能打印值为 NULL 的指针? 这是我的代码:
#include <stdio.h>
int main(void)
{
int * p = 0;
printf("%p %p ", p, *p);
getchar();
return 0;
}
错误是:“抛出异常:读取访问冲突。 p 是 nullptr。” 我想了解错误...
【问题讨论】:
-
p的值为 NULL,p的类型为int *(int指针),指针本身将以%p格式打印。但是*p正在尝试访问(取消引用)地址 NULL。这很糟糕,因为 NULL 不是有效地址。你为什么要打印*p和%p?*p的类型是int。 -
因为你不能取消引用一个无效的指针,这是一个未定义的行为
-
也应该是
"%p %d "而不是"%p %p ",第二个参数是和int,而不是int*。
标签: c visual-studio pointers null