若有定义:int a[3][4];( )不能表示数组元素a[1][1]。 A *

若有定义:int a[3][4];( )不能表示数组元素a[1][1]。
A *(a[1]+1) B *(&a[1][1])
C (*(a+1)[1]) D *(a+5)
答案选C 为什么

C和D都不能表示a[1][1]

下标操作符优先于解除引用操作符,所以*(a+1)[1]就是*((a+1)[1]), (a+1)[1]就是*(a+1+1),也就是a[2],那么*(a+1)[1]就是*(a[2])也就是a[2][0] ,很显然不是a[1][1].

而D选项*(a+5)就是a[5], 这是个行地址,而且是越界后的地址。也不是a[1][1] ,*(a[0]+5)或者*(*a+5)才是a[1][1]
温馨提示:答案为网友推荐,仅供参考