C中&指针的结果是什么?

l24*_*c4l 4 c pointers

以下行的结果是什么:

int* ptr;
printf("%x, %x\n", ptr, &ptr);
Run Code Online (Sandbox Code Playgroud)

我知道这ptr是一个记忆中的地址,但是什么&ptr

Gav*_*n H 25

&ptr将是ptr保存的内存位置的地址.本质上它是指向指针的指针.


Ste*_*son 7

它是包含原始内存位置地址的内存位置的地址(即,它是"指向指针的指针").


Joh*_*don 6

&ptr 如果你愿意,返回指针变量的地址...指向指针的指针.

这通常用于允许函数更改指针实际指向的位置.


AnT*_*AnT 6

ptr不仅仅是"记忆中的一个地址".ptr左值,是内存中保存地址的对象.内存中的每个对象都有自己的地址,无论它拥有什么.

既然ptr是内存中的对象,它也有自己的地址.这个地址正是你所做的&ptr.