int (*p)[4]与 int *p的区别

如果在定义函数时分别用int (*p)[4]与 int *p作为形参接收数组,均能接收长度为4的一维数组。而两者有什么区别?如果一样的话写成后者更为简洁,何必写成前者呢?谢了。

int
(*p)[4]为指向数组的指针,即p为指向包含4个元素的一维数组的指针变量;
int
*p[4]
为指针数组,定义指针数组p,它由4个指向整型数据的指针元素组成;
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-08-06
--------------------
数组arr[4] | arr[0]| arr[1]|arr[2]| arr[3]|
--------------------

若以int (*p)[4]作形参, 则(*p) == arr,即p相当于&arr;
用(*p)[0] 访问 arr[0];
用(*p)[1] 访问 arr[1];

而以int *p作形参,p == arr,*p则等于arr〔0〕;
用(*p)或者p[0] 访问 arr[0];
用(*(p+1))或者p〔1〕 访问 arr[1];

其实int(*p)〔4〕一般用于接收形如arr〔n〕〔4〕(n为正整数)的数组,这个地方大材小用了本回答被提问者采纳
第2个回答  2009-08-06
后面的那个能用p[][]的形式吗
相似回答
大家正在搜