若已知“int a[3][7];”,则用指针表示数组a中的元素时,下列表示中错误的是()。
A)* (a+1)[5]
B)* (* a+3)
C)* (* (a+1))
D)* (&a[0][0]+2)
【解析】
(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选项错误。
注意到:
- [ ]运算符的优先级大于*运算符;
- (a+1)[5]等价于(a+6)等价于&a[6]