C语言指针问题,行指针的赋值与取值。

有以下定义:int a[2][3],(*p)[3];
1.p=a+1可以么?是否表示p指向数组a的第1行?是否正确。
2.p=a是否表示p指向数组a的第0行?
p=a.则*p是数组a的什么呢?
还有可不可以定义成(*p)[4]呢?
既然行指针是指向一维数组,而指针是地址变量,行指针p取值即*p装的是什么啊?即,若p=a,则*p==_____?
最想不通的不是指针的移动问题,而是定义时(*p)[3]中的3是什么意思!
就是这里头都搅大了,似懂非懂的样子。感谢高手的回答了啊!
定义的(*p)[4]和(*p)[3]这两个是啥区别!关键是这个问题!

1.p=a+1可以。表示p指向数组a的第1行。
2.p=a表示p指向数组a的第0行。
3.p=a.则*p是数组a的首地址,这个地址类型是int *。
4.可以定义成(*p)[4],但不能p=a。因为它们类型不一致。
5 *p的值与类型与a[0]相等。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-20
1. 正确
2.p=a是表示p指向数组a的第0行;*p指a[0][0];对于a[2][3]不能将定义成(*p)[4]然后将a的地址赋给p指向;*p==a[0][0];(*p)[3]中的3是与a[2][3]相对的,你如果定义a[2][4]那么这里就是(*p)[4]
第2个回答  2011-06-19
1 不可以 *p没有初值
2 对的 指向第一行
定义的(*p)[4]和(*p)[3]这两个是啥区别! 都是数组,数组个数不同
第3个回答  2011-06-22
我本来打了详细解答,结果只能输出100个字,
你要愿意留个邮箱发过去。
int (*p)[3];p先和*结合,
这是一个指针!
然后p再和[]结合,指向的是数组。
这个3的意思是这个指针指向的数组的元素的是3个,明白了吗?本回答被提问者采纳
相似回答