以下行的结果是什么:
int* ptr;
printf("%x, %x\n", ptr, &ptr);
我知道ptr
是内存中的地址,但&ptr
是什么?
答案 0 :(得分:25)
& ptr将是ptr保存的内存位置的地址。本质上它是指向指针的指针。
答案 1 :(得分:7)
它是包含原始内存位置地址的内存位置的地址(即,它是“指向指针的指针”)。
答案 2 :(得分:6)
&ptr
返回指针变量的地址...指向指针的指针。
这通常用于允许函数更改指针实际指向的位置。
答案 3 :(得分:6)
ptr
不仅仅是“记忆中的地址”。 ptr
是左值,是内存中保存地址的对象。内存中的每个对象都有自己的地址,无论它是什么。
由于ptr
是内存中的对象,因此它也有自己的地址。该地址正是您&ptr
时获得的地址。
答案 4 :(得分:1)
指针只是对内存中某些数据位置的引用。 *指针为您提供存储在该内存位置的值。 & operator返回实际的内存地址,在本例中是一个指针。
答案 5 :(得分:1)
在C中,指针只是存储容器,其中包含一些其他数据块的地址。在这种情况下,ptr保存一些int的地址,它本身只是内存中的一些数据。所以& ptr是保存某些int的地址的变量的地址。
答案 6 :(得分:0)
& ptr只能存储在int **var
或双指针变量中,因此& ptr只是包含另一个地址的ptr的地址。