// 指针不是地址!!废话不多说上代码
#include <iostream>
using namespace std;
void main ()
{
int a=3;
int *ip=&a;
cout<<"a的地址"<<&a<<" a的内容"<<a<<endl;
cout<<"ip的地址:"<<&ip<<" ip的内容"<<ip<<endl;
}
执行结果:
a的地址:0012FF7C a的内容3
ip的地址:0012FF78 ip的内容0012FF7C
所以说指针实际上只是把a的地址作为值存到了自己的实际地址中,这也是为什么sizeof()任何一个32位机器上的指针得到的数都是4的原因,指针的类型决定了他的基础操作时指针中数值的改变,比如ip++时ip中的内容值增加了sizeof(int)编译器会通过ip的内容来找到a这个变量,但并不是ip指向了a,ip就和a变成了一样的东西,如果想实现那样的功能应该使用引用。
#include <iostream>
using namespace std;
void main ()
{
int a=3;
int &refi=a;
cout<<"a的地址"<<&a<<" a的内容"<<a<<endl;
cout<<"refi的地址:"<<&refi<<" refi的内容"<<refi<<endl;
}
执行结果:
a的地址:0012FF7C a的内容3
refi的地址:0012FF7C refi的内容3
引用才是地址的别名,而指针只是一个让编译器可以找到一个地址的一种方式,是单独的一个类型,其中的值用来存储所指向的地址。就好比 甄宓 这个人是个小妞,她又有个别称叫做洛河女妖,你找到洛河女妖便是找到了甄宓,这是用引用的方式描述。甄宓的电话号码是0012FF7C,你可以通过这个电话号码找到她,这是用指针的方式描述,但是你的明白,电话号码不是甄宓~
额最近发现自己废话好多。