c语言,解释一下这道题为什么是B?谢谢!

 我来答
百度网友2018852
2015-08-14 · TA获得超过124个赞
知道答主
回答量:118
采纳率:0%
帮助的人:38.2万
展开全部
自加,有两种用法:
假如定义了一个变量i=1
1) 若使用i++, 指代先取i的值再另i=i+1
2)若使用++i,指代先使i=i+1再取i的值
所以z++一直是先取z,所以一直是20
追问
为什么第二次输出的a,b值为12,42?
追答
这个  ;不是程序运行完一部分了吗
接着prt又运行一次而这次基数为11 41 20
黔含品2
2017-01-11 · TA获得超过3.8万个赞
知道小有建树答主
回答量:2.7万
采纳率:45%
帮助的人:1373万
展开全部
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唯一正确项
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友476a70d
2015-08-14 · TA获得超过2433个赞
知道小有建树答主
回答量:178
采纳率:100%
帮助的人:81.5万
展开全部
首先可以确定参数是传地址,刚开始*z指向变量c,但是*(z++) 表示指针z指向后一个元素,即执行完改操作后,*z指向的不是变量c了,所以变量c的值没变,一直是20.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
旷野行风
2015-08-14 · TA获得超过366个赞
知道小有建树答主
回答量:302
采纳率:33%
帮助的人:231万
展开全部
因为对z指针做了++运算,而不是z指向的内容.

顺带吐槽一句,考++,--运算符真的很没意义.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Machel宿醉
2015-08-14 · 超过11用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:26.6万
展开全部
我觉得是C啊。
++a是先加1再执行,后者是执行过后加
是答案错了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
z532808860
2015-08-14 · 超过13用户采纳过TA的回答
知道答主
回答量:67
采纳率:100%
帮助的人:17.1万
展开全部
*(z++)不是加的是地址,所以加的是地址,对地址指向的数字无影响
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式