c语言问题,不是很难的,望大家指点

来源:百度知道 编辑:UC知道 时间:2024/06/28 03:52:07
int i,a[30][4],(*P)[4];
p=a;
那么(i=0;i<4;i++)
p[i]代表什么?

另外
int a[4][30];
(i=0;i<4;i++)
a+i 与 a[i] 区别在哪里?

int (*P)[4];
这个语句表示定义一个指针数组
也就是是说,这个指针指向一个数组
数组大小为4,数组元素为int类型

p[i]代表什么?

p=a;
这个语句把p指向a
而a本身是数组的数组
所以,p[i]代表数组a的第i个数组.

a+i 与 a[i] 区别在哪里?
可以换用,
表示第i个数组
不同之处在于
a+i是指针形式,a[i]是数组形式
本质上没差别

p[i]代表行地址
a+i 与 a[i] 没有区别,都是行地址

好东西啊,指针不愧是个好东西
p[i]代表的是一个数组,就是a[30]这样的
你把二维数组画在纸上,p[i]指的就是某一行,或者某一列所有的数

后面一问没看懂

p[i]代表行地址,指的是第i行的一个int[]数组(原来是二维的,现在不就是一位了吗)
*(a+i) 与 a[i] 没有区别,都是a[0]偏移i位后的地址上的数值,纯粹a+i在这里是指地址偏移后的地址值

不对啊,数组为a[30][4],若int (*P)[30],则p=a;p[i]代表数组,且,p[i]中有4个元素.但上面的有点难解.