5、已知:int a[2][3]={1,2,3,4,5,6}, (*p)[3]=a;则下列表达式不是4的是 ( )。
5个回答
展开全部
选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(或)
展开全部
这道题很难,需要仔细考虑。
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
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
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
选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的指针
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的指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案是B
猜测法:p+0还是p,所以A、C相等,而B明显与A不同,故答案是B。
猜测法:p+0还是p,所以A、C相等,而B明显与A不同,故答案是B。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(*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.
*(*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.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询