C++ 设有语句int array[3][4]; 则在下面几种引用下标为 i和j 的数组元素的方法中,不正确的引用方式是?

设有语句intarray[3][4];,则在下面几种引用下标为i和j的数组元素的方法中,不正确的引用方式是()A.array[i][j]B.*(*(array+i)+j)... 设有语句int array[3][4]; ,则在下面几种引用下标为 i和j 的数组元素的方法中,不正确的引用方式是()
A. array[i][j] B.*(*(array + i)+ j)
C. *(array[i] + j) D.*(array + i * 4 + j)
展开
 我来答
zhykzhykzhyk
2013-01-04 · TA获得超过395个赞
知道答主
回答量:140
采纳率:100%
帮助的人:220万
展开全部
D
D引用的为 array[i*4 + j],为一个数组,而不是下标为i和j的数组元素
注意 *(a+x) 等价于 a[x]
答案D的正确写法应该为*((int*)array + i * 4 + j),即将array当做int的指针来操作(原本array的类型为int[3][4],并decay为int(*)[4],即指向数组的指针,而不是int*)
追问
能再详细点吗?其他的选项也麻烦解释一下吧!谢谢了~~
追答
答案A 显然是访问二维数组的一般方法
答案B 首先将 array 当做指向 int[4]的指针,利用i选择对应数组,之后再当做int的指针并用 j 选择对应元素
答案C array[i] 是一个数组(二维数组为数组的数组),访问数组的第j个元素可以写成*(a + j)的形式
答案D的正确写法应该为*((int*)array + i * 4 + j),即将array当做int的指针来操作(原本array的类型为int[3][4],并decay为int(*)[4],即指向数组的指针,而不是int*)
541361257
2013-01-04 · TA获得超过293个赞
知道答主
回答量:121
采纳率:60%
帮助的人:48.4万
展开全部
B array可以看做指针 加了两个*号,出来的还是指针,所以绝对是B错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c3803493e
2013-01-04 · 超过20用户采纳过TA的回答
知道答主
回答量:35
采纳率:100%
帮助的人:42.2万
展开全部
B 为错误,因为是数组,不是间接指针
追问
可是老师给的答案是D。。。为什么呢?
追答
以c编译器的执行正确为主, 你可以自己测试一下.

如果是在tc下 D 也是可以得到正确结果的,而B 即使在VC 下也无法正确执行.

每个人都会犯错误,老师也是普通人.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灵魂唱序曲
2013-01-04
知道答主
回答量:11
采纳率:0%
帮助的人:1.7万
展开全部
你可以看下下面的参考

参考资料: 参考资料:资料来源:Yes安全联盟

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
seraph_sigil
2013-01-04 · TA获得超过4434个赞
知道小有建树答主
回答量:442
采纳率:75%
帮助的人:165万
展开全部
应该选择B
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式