[英]What is the result of &pointer in C?
以下行的結果是什么:
int* ptr;
printf("%x, %x\n", ptr, &ptr);
我知道ptr
是內存中的一個地址,但什么是&ptr
?
&ptr將是ptr保存的內存位置的地址。本質上它是指向指針的指針。
它是包含原始內存位置地址的內存位置的地址(即,它是“指向指針的指針”)。
&ptr
返回指針變量的地址...指向指針的指針。
這通常用於允許函數更改指針實際指向的位置。
ptr
不僅僅是“記憶中的一個地址”。 ptr
是一個左值 ,一個保存地址的內存中的對象。 內存中的每個對象都有自己的地址,無論它擁有什么。
由於ptr
是內存中的對象,因此它也有自己的地址。 這個地址是什么時候你做什么你&ptr
。
指針只是對內存中某些數據位置的引用。 *指針為您提供存儲在該內存位置的值。 &運算符返回實際的內存地址,在這種情況下,它是一個指針。
在C中,指針只是存儲容器,其中包含一些其他數據塊的地址。 在這種情況下,ptr保存一些int的地址,它本身只是內存中的一些數據。 所以&ptr是保存某些int的地址的變量的地址。
&ptr只能存儲在int **var
或雙指針變量中,因此&ptr只是包含另一個地址的ptr的地址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.