2个回答
展开全部
调用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再前移一位
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再前移一位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询