在C中没有得到NULL指针错误

时间:2017-01-16 07:07:56

标签: c pointers

我故意试图在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?

2 个答案:

答案 0 :(得分:9)

int *null_test = &x;

null_test包含x的地址。即使x从未初始化,此地址也与x的内容无关。

答案 1 :(得分:5)

  

为什么呢?我甚至没有初始化x但仍然不是null?

您需要区分1)定义和2)初始化。在为内存分配内存时定义变量。当该内存位置填入某个值时,将初始化变量。

此处x未初始化但已已定义 - 这意味着已分配 - 这意味着x在内存中具有特定位置。因此&x不是NULL,因此null_test

int *null_test = &x;

如果您希望null_test为NULL,请明确指定

int *null_test = NULL;