在c ++中通过指针为变量赋值

时间:2014-08-25 03:56:33

标签: c++ pointers

我在c ++中有这段代码。

#include<iostream>
using namespace std;

int main()
{
  int z;
  int v1,v2;
  int *p1,*p2;

  p1 = &v1;
  p2= &v2;

  *p1 = 15; // value pointed by p1 is 10
  *p2 = *p1; // value pointed ny p2 is the value pointed by p1 which at the moment is 10.
  p1 =p2; //p1 is assigned the value of p2 which is 10
   *p1 = 20; // the value pointed by p1 is 20;

   cout<<"v1:"<<v1<<endl;
   cout<<"v2:"<<v2<<endl;

   cin>>z;
}

此处输出为v1:15v2:20。 我在这里有点困惑,p1指向v1的地址,p1指向的最新值是20而不是15,所以输出如何显示v1:15

使用输出i假设指针指向变量地址后立即分配给指针的值而不是最新值。这是正确的吗?

1 个答案:

答案 0 :(得分:4)

您正在重新分配p1以指向与p2相同的位置,这恰好指向v2。这意味着当您将p1指向的值设置为20时,您将写入v2而不是v1。