while(*t++)问题

int fun(char*s)
{char *t=s;
while(*t++);
return(t-s);}
高手讲解一下这个程序的意义,请说详细点谢谢
t++不会使算出的字符串长度多一吗? 字符串长度不包含/0

这是一个求字符串长度的程序。
首先定义一个指针指向字符串的首地址。
while(*t++);
就是说在*t还没到字符串末尾时t会往后。
在*t=='\0'时,t最后执行一次t++
然后返回t到s的距离。
意思是字符串s到其末尾'\0'中间经历的字符数。(包含'\0')
----------------------------------------------------
strlen计算的长度是不包含'\0'的;所以可能在你看来这个函数计算的长度多1。
O(∩_∩)O~
-----------------------------------------------------
如果你认为字符串长度不应该包含'\0',那么这个函数算得字符串长度就多了1。如果你认为可以包含'\0',那么这个就只是和strlen不同的另一种表示形式。只是说法上的区别而已。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-02
t=s;[t指向字符串首地址,假设字符串是"abc"]
判断*t不等于0是否成立,无论结果是否成立,计算t++[t指向'b'],前面判断结果成立,开始循环
判断*t不等于0是否成立,计算t++[t指向'c'],前面判断结果成立,继续循环
判断*t不等于0是否成立,计算t++[t指向字符串末尾的0],前面判断结果成立,继续循环
判断*t不等于0是否成立,计算t++[t指向字符串末尾的0后面],前面判断结果不成立,结束循环
返回值: t位置减去首字符位置应当是字符串内字符数+1,或者说这个字符串占用了数组元素个数

第2个回答  2010-09-17
这个函数用来判断字符串的长度。
你要计算一个字符串的长度,把首地址传进来,while(*t++);的意思是如果*t不是字符串结尾(\0)就向后移一个字符。
第3个回答  2018-05-01
楼主错了,这段程序是指计算字符串占用内存字节个数
第4个回答  2017-10-16
这是一个求字符串长度的程序。
首先定义一个指针指向字符串的首地址。
while(*t++);
就是说在*t还没到字符串末尾时t会往后。
在*t=='\0'时,t最后执行一次t++
然后返回t到s的距离。
意思是字符串s到其末尾'\0'中间经历的字符数。(包含'\0')
----------------------------------------------------
strlen计算的长度是不包含'\0'的;所以可能在你看来这个函数计算的长度多1。
O(∩_∩)O~
-----------------------------------------------------
如果你认为字符串长度不应该包含'\0',那么这个函数算得字符串长度就多了1。如果你认为可以包含'\0',那么这个就只是和strlen不同的另一种表示形式。只是说法上的区别而已。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网