5、已知:int a[2][3]={1,2,3,4,5,6}, (*p)[3]=a;则下列表达式不是4的是 ( )。

能否解释下,A.*(*p+3)B.*p+3C.*(*(p+0)+3)D.a[0][3]... 能否解释下,
A.*(*p+3) B.*p+3 C.*(*(p+0)+3) D.a[0][3]
展开
 我来答
帐号已注销
2021-10-20 · TA获得超过77万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:160万
展开全部

选D。

(*p)[3]=a=a[0][0]=1;

*(*p+3)=a[1][0]=4;

*p+3=&a[1][0],其值指向a[1][0]的地址,

*(*(p+0)+3)=*(*p+3)=4;

a[0][3]=3;

逻辑表达式

逻辑运算的结果只有两个:True(真)和False(假)。Visual Basic提供了六种关系运算符和三种逻辑运算符:

=(等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、<>(不等于)

NOT(非)、AND(与)、OR(或)

义昀欣ek
推荐于2018-03-20 · TA获得超过3297个赞
知道小有建树答主
回答量:6776
采纳率:0%
帮助的人:2151万
展开全部
这道题很难,需要仔细考虑。
a数组数据如下:
a[0][0]:1
a[0][1]:2
a[0][2]:3
a[1][0]:4
a[1][1]:5
a[1][2]:6

p是指向有三个元素数组的指针,也可以认为是一个指向指针的指针。

A.*p为三元素数组的首地址,+3后会指向数组中的第4个元素,发生了越界,还好,a是二维数组,越界后不会出错,而是指向了二维数组中的第二个三元数组的第一个元素,取值得4。

B.与A相比少了一个间接运算符*,所以它表示的是一个地址,非值。

C.p+0后没有任何变化,与A相同。

D.a[0][3]其实越界了,好在后面还有a[1][0]等数据,于是将a[1][0]中的数组4作为其值。

答案是B
编写程序验证了答案,显示如下:
*(*p+3)=4
*p+3=1638204
*(*(p+0)+3)=4
a[0][3]=4
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c4249ef
2010-06-29 · TA获得超过4866个赞
知道大有可为答主
回答量:1855
采纳率:0%
帮助的人:3198万
展开全部
选B

a数组数据如下:
a[0][0]:1
a[0][1]:2
a[0][2]:3
a[1][0]:4
a[1][1]:5
a[1][2]:6

p是一个指向3个元素数组的指针,就是说p+1相当于&a[1],这里的p+1会移动一个一维数组的大小,就是说3个int的大小
*p相当于a[0]

所以A和C一样,*p+3相当于&a[0][3],指向4,再解引用就变成了4

从上面的分析就看出了D是对的,而B是指向这个4的指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JohnnyWg
2010-06-29
知道答主
回答量:14
采纳率:0%
帮助的人:12.6万
展开全部
答案是B

猜测法:p+0还是p,所以A、C相等,而B明显与A不同,故答案是B。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
o寒风夜袭o
2010-06-29 · TA获得超过131个赞
知道答主
回答量:131
采纳率:0%
帮助的人:66.5万
展开全部
(*p)[3]=a=a[0][0]=1;
*(*p+3)=a[1][0]=4;
*p+3=&a[1][0],其值指向a[1][0]的地址,
*(*(p+0)+3)=*(*p+3)=4;
a[0][3]=3;
选D.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式