若有以下定义和语句,则对a数组元素非法引用的是:

int a[2][3],(*pt)[3];
pt=a;
A.pt[0][0] B.*(pt+1)[2] C.*(pt[1]+2) D.*(a[0]+2)

答案是B,请解释一下~~~><

指针变量 pt 指向 a 数组!
*pt 相当于 a [0];

*(pt + 1) 相当于 a[ 1];

*(pt + 1)[2] 相当于 *(pt + 3);

* (pt + 3) 等价于 a[3];
显然 a[3] 不存在! 所以 选项 B 非法!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-05
优先级的问题,
(*(p1+1))[2] 就没问题,
不然[2]做用的是 (pt+1),其实就相当于是 pt[3][0]了,所以错了。本回答被网友采纳
相似回答