代码来自这里:http://www.cplusplus.com/doc/tutorial/pointers/ http://www.cplusplus.com/doc/tutorial/pointers/
#include <iostream>
using namespace std;
int main ()
{
int firstvalue = 5, secondvalue = 15;
int * p1, * p2;
p1 = &firstvalue; // p1 = address of firstvalue
p2 = &secondvalue; // p2 = address of secondvalue
*p1 = 10; // value pointed to by p1 = 10
*p2 = *p1; // value pointed to by p2 = value pointed to by p1
p1 = p2; // p1 = p2 (value of pointer is copied)
*p1 = 20; // value pointed to by p1 = 20
cout << "firstvalue is " << firstvalue << '\n';
cout << "secondvalue is " << secondvalue << '\n';
return 0;
}
我的问题是在指针语句中。 *p2 = *p1 意味着 p2 现在指向 p1 所指向的任何值。然而,p2 = p1 意味着p1 的值现在被复制到p2 中。如果指针本身不能保存值,如何将其复制到其中?难道它不只是指向相同的值吗?
我猜你的意思是 p1 = p2 (意味着 p2 的值被复制到 p1)。
指针保存(虚拟)内存中的地址。
因此,p1 现在保存着 p2 的值,即第二个值的地址。
在
*p1 = 20;
内存地址 p1 处的值(与 p2 相同)现在值为 20。
第一个值保持不变,并且不再被两个指针 p1 和 p2 引用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)