我新手上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) –