求助一道c语言问题

30题的AC选项不理解... 30题的AC选项不理解 展开
 我来答
最大的宝宝
2020-01-17 · TA获得超过828个赞
知道小有建树答主
回答量:1569
采纳率:67%
帮助的人:387万
展开全部
先想一想字符串是什么样子的?比如下面两个:
abc\0
只包含一个\0的空串
再来看看对于以上两个字符串,A能否胜任工作。它相当于
do {*t=*s; t++; s++;}
while (*s);
是不是这样,你最好上机单步调试一下。假如我写的是对的,这意味着对于abc\0,当复制完字符c后,由于++的作用,s指向了下一个字符,使得*s=\0,导致while为假不再循环。这意味着目标字符串没有终止符\0,这就完蛋了。
对于空串\0,也是++的问题,复制完终止符\0后,有可能不结束循环,胡乱执行下去,导致溢出。
答案C是很标准的写法。赋值后,判断这个值是不是等价于假,为假意味着这个字符是终止符\0,那就没有必要继续执行了。
很简单的代码,却要写这么一大通才能说清楚,难怪别人不愿意回答。自己还是学会单步调试为好,更直观更简单,才能把书真正读薄
更多追问追答
追问
C选项while里的意思是如果t=s 可是还没有赋值怎么会相等呢
追答
这个等号就是赋值啊,不要和==混淆了。它实际上就是while ((*t = *s) == true) 的缩写
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式