【发布时间】:2018-04-09 19:10:40
【问题描述】:
我是C新手,需要通过以下代码了解屏幕上打印的每个值的含义:
#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的两倍。)
标签: c pointers reference dereference