一道C语言题目,哪位高手帮我看看下面一道题要选哪个,

问题描述:

一道C语言题目,哪位高手帮我看看下面一道题要选哪个,
(45)若有以下定义和语句:
int w[2][3],(*pw)[3]; pw=w;
则对w数组元素非法引用是( )
A)*(w[0]+2) =*w[0][2] B)*(pw+1)[2]
C)pw[0][0] =*w[0][0] D)*(pw[1]+2) =*w[1][2]

A 赋值号左边的*(w[0]+2) 就是w[0][2],正确,但是赋值号左边的w[0][2]为元素,不能再次反引用,错误
B *(pw+1)[2]在前面赋值pw=w;后,注意[]运算符级别高于*,因此就是w[3][0],语法正确,但是下标越界了,有逻辑错误
C 赋值号左边的pw[0][0]就是w[0][0],正确,但是赋值号右边的*w[0][0]错误,原因参见A
D 赋值号左边的*(pw[1]+2) 就是w[1][2],正确,但是赋值号右边的*w[1][2]错误,原因同上
综上所述,没有一个答案是正确的,唯一语法没错的答案有逻辑错误
不清楚你的题目是否有误