我新手上C.我需要了解每個印刷在屏幕上的值的裝置通過以下代碼:C指針的「**&ptr」和「2 ** ptr」是什麼意思?
#include<stdio.h>
int main()
{
int x = 10;
int *ptr = &x;
printf("%d %d %d\n", *ptr,**&ptr, 2**ptr);
return 0;
}
輸出(GCC):
10 10 20
這裏,我已聲明變量x
和ptr
指向x
變量。所以,*ptr
的印刷值爲x
。但我無法理解**&ptr
和2**ptr
的值。
在此先感謝。
第一個10是ptr的內容(而ptr是x的adr)所以它是x的內容......第二個是你得到ptr的adr,* =你得到它的內容,* =你再次得到ptr的內容,這也是x。最後一個將* ptr乘以2和* ptr的內容再次是x的內容 –
如果您瞭解了什麼是* * ptr,那麼您在理解格式時可能會明白'2 * * ptr'是什麼。 (這是'* ptr'的兩倍) – Ryan
您可能會發現這些讀數很有用[什麼是「取消引用」指針?](https://stackoverflow.com/questions/4955198/what-does-dereferencing-a-pointer - 意思是「引用」和「取消引用」](https://stackoverflow.com/questions/14224831/meaning-of-referencing-and-dereferencing) –