一道C语言题目,哪位高手帮我看看下面一道题要选哪个,并帮我解释一下,谢谢。
(45)若有以下定义和语句:intw[2][3],(*pw)[3];pw=w;则对w数组元素非法引用是()A)*(w[0]+2)=*w[0][2]B)*(pw+1)[2]...
(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] 展开
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]错误,原因同上
综上所述,没有一个答案是正确的,唯一语法没错的答案有逻辑错误
不清楚你的题目是否有误
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]错误,原因同上
综上所述,没有一个答案是正确的,唯一语法没错的答案有逻辑错误
不清楚你的题目是否有误
展开全部
你确定是这些选项?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案是B,解释,倒还真不知道如何说,但是题目我是肯定的见过的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
B
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询