求解一道关于c语言指针的选择题

设有以下定义:inta[3][3]={1,2,3,4,5,6,7,8,9};int(*ptr)[3]=a,*p=a[0];则以下能够正确表示数组元素a[1][2]的表达式... 设有以下定义:
int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int (*ptr)[3] = a, *p = a[0];
则以下能够正确表示数组元素a[1][2]的表达式是______ 。
A) *((*ptr + 1)[2]) B) *(*(p + 5))
C) (*ptr + 1) D) *(*(a + 1) + 2)
4个选项看晕了 能不能分别解释一下O(∩_∩)O谢谢
展开
 我来答
今人今事
2014-01-08 · TA获得超过1347个赞
知道小有建树答主
回答量:207
采纳率:80%
帮助的人:101万
展开全部

Sherry32lin
2014-01-05
知道答主
回答量:7
采纳率:0%
帮助的人:7.4万
展开全部
D肯定是对的,因为二维数组相当于指针的指针。a+1代表第1行的地址,*(a+1)+2代表第一行第二个元素的地址,再用*取值,就是a[1][2]。ptr其实也可以这么表示,但是[2]就代表取值了,就不用再用*取值了。p是一个一级指针,只能指向二维数组中第一行的元素。不能与a和ptr相提并论
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式