int main(){
int a[2][3]={{1,2,3},{4,5,6}};
int **p=a;
cout<<**p<<endl;
}
以上代码有没有问题?
由于p是指向指针的指针,p指向一个int *类型的变量,而数组名a表示数组首元素的地址&a[0],因此p指向a[0]。然而a[0]并不是int *类型的变量,与p应该指向的类型不同,因此在初始化时编译器会发现类型不匹配,产生编译错误。
应该改为:
int main(){
int a[2][3]={{1,2,3},{4,5,6}};
int (*p)[3]=a;//p为指向数组的指针
cout<<**p<<endl;
}