第1个回答 2020-04-16
这个不太好理解啊!
第一个int
c[4][5]是二维数组,
可以理解为有4个元素的数组,其中每个元素又是5个整数的数组.
第二个int
(*p)[5]是数组指针,
p是一个指针,
它指向的是int
[5],即5个整型,
这时p++是增加20个偏移.与int
*p[5]不同;
p
=
c
就是数组指针p指向
&c[0],
当p
=
c时p[0]就是c[0],
p[1]就是c[1];
p[1][0]就是c[1][0];
上面的定义可用如下替换:
typedef
int
MyType[5];//定义一个新的类型,大小为5个整数.
MyType
c[4];
MyType
*p;
p
=
c;
这样就好理解啦.
C中指针与数组关系较复杂,
但只要把a[5],
b[4][5],
c[3][4][5],
*p1,
*p1[5],
*p2[4][5],
(*p3)[5]等搞懂就差不多了.
^_^