新手C语言,这句话怎么理解??谢谢了!!!

如题所述

这是根据fun的功能的结论。
fun的功能是:
遍历从s[0]到s末尾的所有字节,如果s[i]是数字字符'0'~'9',那么将s[i]后面的所有字符(从s[i+1]直到最后的'\0')都往后移动一位,空出来的s[i+1]设为星号'*'。
如果注释“此句也可以不要”所在的i=i+1这句话没有,那么随着外层循环for (i =0, s[i]!='\0'; i++)的再一次开始,会先执行一次i++,于是s[i]就变成了刚刚插入的那个'*'。而for (i =0, s[i]!='\0'; i++)的第一判断就是“如果s[i]不是数字字符,则什么都不做”。换言之,s[i]是星号的时候,循环体会立刻完成当前这一轮,然后再度回到for (i =0, s[i]!='\0'; i++),执行i++。
简而言之,注释所在的i=i+1这句话,如果没有,只是会多执行一轮外层for循环,外层for循环的i++也能实现这个i=i+1。不影响程序结果。

如果考虑效率问题,保留i=i+1这句话的话,就可以省掉两次判断(一次是s[i] != '\0',另一次是if (s[i] >= '0' && s[i] <= '9') ),程序会快一点。
温馨提示:答案为网友推荐,仅供参考