黑马程序员技术交流社区
标题:
字符串长度输出出毛病了求告知
[打印本页]
作者:
曹雨
时间:
2014-6-19 15:29
标题:
字符串长度输出出毛病了求告知
本帖最后由 曹雨 于 2014-6-19 17:42 编辑
下午在写代码的时候出现了个奇怪的事,请各位大神们解答谢谢了
#include <stdio.h>
int string_len(char *s)
{
int i;
for(i=0;s
!='\0';i++)
return i;
}
int main()
{
char a[]="abc";
printf("%d\n",string_len(a));
return 0;
}
结果是0
然后我又重写了一遍
#include<stdio.h>
int string_len(char*s)
{
int i;
for(i=0;s
!='\0';i++);
return i;
}
int main()
{
char a[]="abc";
printf("%d\n",string_len(a));
return 0;
}
运行结果成了3.
不知道哪里搞出毛病了两种都留下来了,粘贴复制,还是原来的结果。。求告知- -迷惑中
作者:
刘元明
时间:
2014-6-19 17:18
本帖最后由 刘元明 于 2014-6-19 17:31 编辑
你的string_len函数进去就返回有意义么,真正的做法是循环结束返回i
作者:
刘元明
时间:
2014-6-19 17:19
本帖最后由 刘元明 于 2014-6-19 17:40 编辑
出现问题的原因很简单,第一种写法for循环进去,就返回i,而i的初始值就是0,所以返回0;因为你的第二个写法for循环后面多了个";"for循环走过a,b,c后遇到‘\0’退出循环,执行下一句才返回,此时i的值就是3
作者:
刘元明
时间:
2014-6-19 17:28
本帖最后由 刘元明 于 2014-6-19 17:33 编辑
你的误区就是不清楚for循环执行的过程,第一种写法,i的值不会累加后再返回,而是执行第一次的时候就return。第二种写法,ruturn i;上边这句是在循环执行完之后返回
作者:
曹雨
时间:
2014-6-19 17:40
刘元明 发表于 2014-6-19 17:19
出现问题的原因很简单,第一种写法for循环进去,就返回i,而i的初始值就是0,所以返回0;因为你的第二个写法 ...
3q.看到了,真马虎。谢谢吼吼:lol
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2