用printf打印空指针给出(nil)但是print& ptr给出一个地址。为什么呢?

时间:2016-10-28 05:08:52

标签: c pointers

所以,如果我这样做:

int *ptr = NULL:

printf("%p", ptr);

我打印出来(零)。那么这是打印出指针的地址?哪个指向空指针地址。

但如果我这样做:

int *ptr = NULL;

printf("%p", &ptr);

我得到了一个内存地址。为什么是这样?是因为它给出了实际的NULL内存位置吗?这个位置总是会改变吗?每当我使用第二段代码时,我会不断获得不同的内存地址。

1 个答案:

答案 0 :(得分:4)

指针ptr中存储的NULL0

但是,ptr是一个变量。它存储在某个内存位置。因此,如果您使用&ptr,您将获得存储ptr的内存位置。