关于#c语言#的问题,请各位专家解答!

img

img


这个k为什么返回的数据是十八呢,有人能写下步骤吗这个K为什么返回的数据是十八呢,有人能写下步骤吗

流程如下:

while内的语句等效为以下两句话:
        tmp=t;
        t++;
        while( * tmp)
而main函数中s是一个字符串初始化的,所以s[14]='n',s[15]='\0'。而s即是数组的0号位置,简单近似理解成s=0
子函数中最后运行的是t位置=15,然后tmp=t=15,然后t++即近似理解成t=16,然后 * tmp 即取到了\0 跳出循环。最后执行t-s-1=16-0-1=15

img


其实子函数就是去计算字符串中总共有多少个字符(t=16个)减去最后一个系统自动添加的\0 (即return中说的-1)结果就是字符串有效字符个数(t-s-1即15了)

这是计算字符串长度的函数,怎么会是18呢?字符串有15个有效字符,应该是15啊

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^