我在理解C ++中的指针时遇到了问题。我以为我明白了,但在这种做法之后,这似乎是一个挑战。
int main() {
int x, y, z;
int *p =&x, *q = &y, *r =&z;
*p = 7;
*q=4;
*r = (x+y) * 4;
*p=*q;
x = (*q) + (*r);
p=q;
q=r;
*r=*p;
y = (*r * 3) +y;
cout<<x << " " << y << " " << z<<endl;
cout<< *p<<" " << *q << " " << *r<< endl;
return 0;
}
我的思考过程: p和x = 7,q和y = 4.且r和z = 44。 那么p = q所以x = 4.然后我们将x改为48.现在当p = q和q = r时,我不确定会发生什么。任何人都可以帮我理解吗?谢谢
答案 0 :(得分:3)
p=q
向p
指针指定q
指针的值y
的地址,因此在此作业后p
实际指向{{} 1}}。
另一部分是类似的。
答案 1 :(得分:2)
+-----+
p -> | x |
+-----+
+-----+
q -> | y |
+-----+
+-----+
r -> | z |
+-----+
p = q
+-----+
| x |
p +-----+
\
\ +-----+
->| |
->| y |
/ | |
/ +-----+
q
+-----+
r -> | z |
+-----+
q = r
+-----+
p | x |
\ +-----+
\ +-----+
->| |
| y |
+-----+
q
\
\ +-----+
->| |
->| z |
/ | |
/ +-----+
r