您的位置:首页 > 其它

指针数组 数组指针

2014-08-28 16:14 246 查看
今天看到一个问题:int a[3][3];int **p;p=a;会不会有问题?

貌似觉得没问题,还是知识的基础和本质没有掌握透彻的原因。

分析:二维数组实质上是数组的数组,可以退化为数组的指针,但不是指针的指针。

比如:int a[3][3],如果写在形参里,可以写成int (*p)[3],但不是 int **p。

上题中,int a[3][3]中的a的类型是(*)[3],而p的类型是**,它们的类型并不匹配,所以不可以p=a。

可以修改为:int a[3][3];int (*p)[3];p=&a;

1)int a[3][3]; 数组的数组,a指向 int [3][3]

2)int p1[][3]; p1指向 int [][3],只要每行3个int即可。

3)int *p2[3]; 指针数组,即数组p2[3]是int *型的,数组的每个元素都是一个指针。

4)int (*p3)[3]; 数组指针(行指针)。

5)int **p4; 指针的指针。

可以如下赋值:p3=p1;p4=p2。因为它们的类型匹配。数组的数组与数组的指针可以,指针数组与指针的指针可以。

还看到一句话:[ ]比 * 的优先级高,有道理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: