c语言题目:已知有声明"int a[4][4]={{1,2,3,4},{5,6,7,8},{9,1

c语言题目:已知有声明"int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};",若需要引用值为12的数组元素,则下列选项中错误的是____ 。
A.*(a+2)+3 B.*(*(a+2)+3) C.*(a[2]+3) D.a[2][3]

a是一个二维数组,可以看成元素是一维数组的一维数组。用数组名表示数组是表示的数组的首地址,数组的步进是以其元素作为参照的。a作为二维数组,那么a+2步进以一维数组整个数组做参考,所以就移到了{9,10,11,12}这个一维数组的首地址这儿来,然后对它取*就相当于成了一维数组,一维数组以元素int做参考,步进3就移到步进3移到的是12的地址上。所以a的值是12的地址,b就正确了。
二维数组只带一个下标认为是组下标,故而a[2]是指向了{9,10,11,12}这个一维数组,一维数组步进以int作为标准,+3移到了12的地址上,取*就得到了12的值。
D a[2][3],第一个组下标,第二个组内下标,取得的肯定是12.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-22
错误的是A。它不是元素值,而是元素地址。
第2个回答  2013-12-22
A是错误的,A选项是指向a[2][3]的指针,其他的都是a[2][3]
第3个回答  2013-12-22
B追问

为什么?

追答

因为B算出来是*12也就是12的地址,其它的算出来都是12

相似回答