问题
单项选择题
若有定义:
int w[3][5];
则以下不能正确表示该数组元素的表达式是______。
A.*(w+1)[4]
B.*(*w+3)
C.*(*(w+1))
D.*(&w[0][0]+1)
答案
参考答案:A
解析: 本题考查的是通过指针引用二维数组元素。通过一维数组名或指向一维数组元素的指针来引用数组元素有两种写法:a[i]和*(a+i),它们是等价的。这是一种运算符之间的等价转换,就好像a-(b-c)等价于a-b+c一样。知道了这种转换,我们可以将之扩展到二维数组甚至任意维数组上来。因为[]运算符的结合性是从左至右的,所以w[i][j]等价于(w[i])[j],此时可以先将任意一个[]运算符转换为指针形式为:(*(w+i))[j]或*(w[i]+j),或者同时转换:*(*(w+i)+j)。上述几种形式都完全等价于w[i][j]。