c语言,解释一下这道题为什么是B?谢谢!
7个回答
展开全部
A 数组只有五个元素。 p+0到p+4合法, p+5越界。
B *a其实就是a[0] 所以 *a+1是a[0]+1 不是地址。
C a本身已经等效int*型了,所以 &a其实是int**型。 更准确的说法是int*[5]这样的数组指针。 再加1,其值等效于&a[5]
这段可能不好理解, 总之这里是类型不匹配就好。
D唯一正确项
B *a其实就是a[0] 所以 *a+1是a[0]+1 不是地址。
C a本身已经等效int*型了,所以 &a其实是int**型。 更准确的说法是int*[5]这样的数组指针。 再加1,其值等效于&a[5]
这段可能不好理解, 总之这里是类型不匹配就好。
D唯一正确项
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先可以确定参数是传地址,刚开始*z指向变量c,但是*(z++) 表示指针z指向后一个元素,即执行完改操作后,*z指向的不是变量c了,所以变量c的值没变,一直是20.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为对z指针做了++运算,而不是z指向的内容.
顺带吐槽一句,考++,--运算符真的很没意义.
顺带吐槽一句,考++,--运算符真的很没意义.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得是C啊。
++a是先加1再执行,后者是执行过后加
是答案错了吗?
++a是先加1再执行,后者是执行过后加
是答案错了吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*(z++)不是加的是地址,所以加的是地址,对地址指向的数字无影响
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询