c语言问题?

fun循环看不懂,能不能来个大佬详解... fun循环看不懂,能不能来个大佬详解 展开
 我来答
听不清啊
高粉答主

2020-08-30 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
调用fun("97531",'6')的过程:
a指向'\0'时不满足,a指向'\0'后面的一个字符。
此时*(a-1)就是'\0',满足<'6'
原'\0'后面的一个字符被*(a--)=*(a-1)修改为'\0',然后a指向'1'的后一个位置(原'\0')。
如此这般,因1、3、5都符合同样条件,所以它们各自后移一位,直到*(a-1)就是'7',不满足<'6'。
再执行*(a--)=b;即将'7'后面的一个的字符修改为'6'
返回后,由puts(s)执行输出为:
976531
=========================
第一个while循环*(a++)
相当于以下两行:
while(*a!='\0')a++; //先将指针a指向串尾符
a++; //再后移一位
还有*(a--)=*(a-1)相当于以下两行:
*a=*(a-1); //先把a所指前一个字符后移一位到a指向的位置
a--; //然后a再前移一位
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风若远去何人留
2020-08-29 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450113
专业C/C++软件开发

向TA提问 私信TA
展开全部
第一个循环,找到字符串结束的位置
第二个循环,将字符串中小于b的字符向后移动一位
退出位置是第一个比b大的
然后把b插入到这个位置
也就是保证降序将b插入

顺便说一下,这个代码是不严谨的,对字符串操作越界了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式