二维数组a[3][4],为什么不能int *p=a ?

#include<iostream>
using namespace std;
int main()
{
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,9,9,9}};
int *p=a;//cannot convert `int (*)[4]' to `int*' in initialization,为神摸?
cout<<p<<endl;
return 0;

}

C语言规定数组名是首地址,也就是指针 二维数组名就相当于二级指针(指向指针的指针), 而你定义的int *p; 这个p只是一级指针, 所以 p不能指向a ,
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-08
这是个指针类型的问题,int *p中p的类型是int *型,二维数组名a可以看做是int **型的,你把int *p=a[0]就好了,a[0]在这里是一级指针;或者int *p=*a;追问

谢谢

追答

int a[3][4]={a[0],a[1],a[2]};
a[0]={1,2,3,4},
a[1]={5,6,7,8},
a[2]={9,9,9,9}
这样你就懂了!呵呵。。。a是指向数组的指针,而int *p是指向整型的指针

追问

http://zhidao.baidu.com/question/407546397.html?oldq=1
恩 大侠帮我看看这个=w=

追答

搞定了!啊哈哈。。

相似回答