我故意试图在C中获取NULL指针,但我没有这样做.这是我编码的内容:
int main(void) { int x; //UNINITIALIZED so that it will represent "nothing" int *null_test = &x; printf("This should be null %p \n", null_test); }
但它给了我一个地址:0x7fd96c300020
这似乎NULL
不像我希望的那样.
为什么?我甚至没有初始化x
但仍然不是null?
后
int *null_test = &x;
null_test
包含的地址x
.x
即使x
从未初始化,该地址也与内容无关.
为什么?我甚至没有初始化x但仍然不是null?
您需要区分1)定义和2)初始化.在为内存分配内存时定义变量.当该内存位置填入某个值时,将初始化变量.
这x
是未初始化但已经定义 - 这意味着被分配 - 这意味着x
在内存中有一个特定的位置.所以&x
不是NULL,所以null_test
:
int *null_test = &x;
如果您想要null_test
为NULL,只需明确指定它
int *null_test = NULL;