C++自学过过程中发现2个很类似的东西,都是与指针有关,*与&的区别。然后自己写了个测试代码。
首先是*:
int main()
{
int i = 10;
int *a = &i;
cout << "a的值:" << *a << endl;
cout << "a的地址:" << &a << endl;
cout << "i的值:" << i << endl;
cout << "i的地址:" << &i << endl;
int b = 5;
a = &b;
cout << "修改后a的值:" << *a << endl;
cout << "修改后a的地址:" << &a << endl;
cout << "修改a后i的值:" << i << endl;
return 0;
}
运行结果:
然后是&:
int main()
{
int i = 10;
int &a = i;
cout << "a的值:" << a << endl;
cout << "a的地址:" << &a << endl;
cout << "i的值:" << i << endl;
cout << "i的地址:" << &i << endl;
int b = 5;
a = b;
cout << "修改后a的值:" << a << endl;
cout << "修改后a的地址:" << &a << endl;
cout << "修改a后i的值:" << i << endl;
return 0;
}
结果:
————————————————————————————————————————
可以看出,当int &a = i;时。变量a的地址与变量i的地址完全相等,操作a就等于在操作i。
当int *a = i;时,变量a与变量i是两个地址,可以改变a储存的地址从而指向其他变量。