首先,声明一个二重指针
int **a;
这里**a可以看作是一个整型变量,*a则存储的是**a这个变量的地址,a存储*a的地址。由于**a未被初始化,只是被声明,系统没有分配给**a存储空间,所以*a没有被赋值初始化,a同理。
分析以下代码:
#include<iostream>
using namespace std;
int main(){
int **a;
cout<<a<<endl<<*a<<endl<<**a<<endl;
return 0;
}
执行以上代码,系统会报错,这是因为int **a只是声明,没有定义。
将代码修改:
执行结果如下:
当a被赋值为c的地址,则*a与**a被间接的赋值(*a=c,**a=b);
当我们改变*a的值,令*a=&d,**a则改变为d所在地址中的值,即d,而*a的地址没