理解示例程序中的指针

时间:2014-03-21 07:41:10

标签: c++

我在理解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时,我不确定会发生什么。任何人都可以帮我理解吗?谢谢

2 个答案:

答案 0 :(得分:3)

p=qp指针指定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