【发布时间】:2011-11-07 22:37:37
【问题描述】:
我大致了解了指针的逻辑,但对我来说有一个不清楚的点与底层代码有关。
#include <iostream>
using namespace std;
int main ()
{
int first = 50,
second = 150;
int * p1, * p2;
p1 = &first; //p1 is assigned to the address of first
p2 = &second; //p2 is assigned to the address of second
*p1 = 100; //first's value is changed as 100 by assigning p1's value to 100
*p2 = *p1; //now p2's value should be 100
p1 = p2; //I think we want to change p1's adress as p2
*p1 = 200; //I expect that the new value of p1 should be 200
cout << first << second;
return 0;
}
程序打印 first=100 和 second=200,但正如我上面评论的,我希望 p1 的值更改为 200。但它仍然保持为 100。这有什么意义?
【问题讨论】:
-
p1 = p2你的赋值改变了指针的值,之后p1指向与p2相同的值,即&second -
我不明白你对
p1 = p2;的要求。这将使p1指向与p2相同的位置,所以现在p1和p2将指向同一个变量second。
标签: c++ pointers pointer-address