【发布时间】:2020-12-25 11:06:26
【问题描述】:
我正在尝试理解指针的操作。
以下代码:
void main () {
int x = 1;
int y = 2;
int z = 3;
int *p = &x;
int *q = &y;
int *r = &z;
//print with labels the values of x, y, z, p, q, r, *p, *q, *r
printf("x is: %d\n%y is: %d\nz is: %d\n\n",x,y,z);
printf("p is: %d\n%q is: %d\nr is: %d\n\n", p, q, r);
printf("*p is: %d\n%**q is: %d\n*r is: %d\n\n", *p, *q, *r);
}
使用 gcc 编译器的结果是:
行的预期结果:
是:
x is: 1
y is: 2
z is: 3
p is: 6422288
q is: 6422284
r is: 6422280
*p is: 00000001
*q is: 00000003
*r is: 76036FED
根据我的理解,这不是最后三行应该出现的结果,它们应该给出与第一个原因相同的值,这个结果背后是否有原因,或者它是否正确并且我遗漏了什么?
【问题讨论】:
-
第一个
\n之后的每个printf中都有多余的%。
标签: c pointers memory dereference