C语言问题,对C数组元素正确引用的是?

int c[4][5],(*cp)[5];
cp=c;
A cp+1
B *(cp+3)
C *(*cp+2)
D*(cp+1)+3

解:
int c[4][5],(*cp)[5];
cp=c;
这里cp是二维数组c的首地址 cp本身也是二维数组

正确的是:C
*(*cp+2) *cp是cp[0][0]的地址 *cp+2就是cp[2][0]的地址
*(*cp+2) 就是cp[2][0]的值

其余的引用都是引用的地址
要想引用二维数组的元素值 必须使用两个**

希望能帮助你哈追问

(*cp)[5];这个不是指向一维数组的指针变量吗?

追答

对 但是它实际也是一个行标不确定的动态二维数组
所以二维数组名可以直接赋值给cp 从而cp就是c首地址
用法和数组c相同

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-16
C
因为int (*cp)[5]; 相当于 int a[5] ;

cp=c则 把c[4][5]的一维四个数赋给a[5]

那么调用就是*(*cp)
相似回答