【C++二级难题图解】对二维数组数组名作指针的考察

若已知“int a[3][7];”,则用指针表示数组a中的元素时,下列表示中错误的是()。

A)* (a+1)[5]
B)* (* a+3)
C)* (* (a+1))
D)* (&a[0][0]+2)

【解析】
【C++二级难题图解】对二维数组数组名作指针的考察
  (a+1)相当于指向a[1]的指针;
  (a+1)[5]相当于(a+6)相当于指向a[6]的指针;
  * (a+1)[5]相当于* ((a+1)[5])相当于a[6]。

A选项等价于a[6](a[6]是指向a[6][0]的指针),但a[6]不存在,故A选项错误。

注意到:

  1. [ ]运算符的优先级大于*运算符;
  2. (a+1)[5]等价于(a+6)等价于&a[6]