#include<iostream>
using namespace std;
int main() {
int a = 2;
int *b = &a;
int c = (*b);
cout << "address b:" << b << endl;
cout << "address c:" << &c << endl;
return 0;
}
输出结果:
address b:00F3F720
address c:00F3F708
b是指向a的指针,而c是一个被赋值为b指向的值的变量。
c仅仅是通过b进行了间接的赋值,将b指向的值赋给了c,跟int c = 2并没有区别。
所以b并不指向c,从前面得b是指向a的。
c有自己的区别于a的内存,所以c的地址跟a的地址肯定不相同。既然b指向a,所以b的值就是a的地址,所以&c肯定与b不相等。
结论:c和a,b根本没有关系。
以后要避免这种写法。