若有定义:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a; ,( )对数组a元素的引用是正确的。

若有定义:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a;,()对数组a元素的引用是正确的。为什么选择A能解释下四... 若有定义:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a; ,( )对数组a元素的引用是正确的。为什么选择A能解释下四个选项吗 展开
 我来答
chinaboyzyq
2018-05-18 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3193万
展开全部
int (*p)[4];表明p是行指针,即p指向二维数组中的一行。
p=a;这一句表示p指向a[0],也就是指向a数组第0行的第0个元素(a[0][0])的地址。
p[2]表示p指向a数组的第二行,即指向a[2]行,也就指向a[2][0]的地址。
p[2]+3表示行指针指向a数组的第二行(从第0行开始),(从0开始)第3个元素,也就是a[2][3],*(p[2]+3)表示第2行,第3个元素的值。
p+4表示第四行(从0行开始),因为a数组没有第四行,所以是错的。
p[4]表示第四行(从0行开始),原因同上。
*p表示a数组第0行,第0列地址,**p表示a[0][0]的值,值不会再包含元素,所以(**p)[2]是错的。
处摇胼手胝足
2018-05-18 · TA获得超过294个赞
知道小有建树答主
回答量:488
采纳率:83%
帮助的人:164万
展开全部
A。
a数组的长度是3,*(p[4])和**(p+4)都会造成超出地址范围
(**p)[2]表达不正确
*(p[2]+3) 是a[2][3];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3168eac
2018-05-18 · TA获得超过425个赞
知道小有建树答主
回答量:734
采纳率:32%
帮助的人:243万
展开全部
答案
a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式