先看一段代码:
#include <iostream>
using namespace std;
int main()
{
int a=4;
int *p=NULL;
p=&a;
cout <<&*p<<" "<<*p<<" "<<&p<<" "<<p<< endl;
return 0;
}
结果:
先来说明两个符号 &是取地址符; *是取值符号
指针其实是存在两个地址的,一个是指针指向的值的地址,一个是指针本身存储的地址。
换句话说就是:存地址A的地址B。
在上个例子当中:
&*p与P的值是相同的,就说明了:P存的是a的地址,&*p是取的存储4这个值的地址。&p就是存储a的地址的地址。