黑马程序员技术交流社区

标题: 关于return的问题 [打印本页]

作者: 晓sea    时间: 2014-3-22 11:57
标题: 关于return的问题
本帖最后由 晓sea 于 2014-3-22 12:17 编辑

在李明杰老师的C视频里有这样的一段程序,是关于一段检验字符串里是否包含某个字符的程序。
int char_contains(char str[];char c)
{
    for (int i = 0; i <strlen?(str); i ++)
    {
        if (str = c)
        {
             return 1;
         }
    }
    return 0;
}

上面是一个求解字符串 str[]是否包含 变量c的函数,我迷惑的是这里的return 1的作用范围,按我分析 if成立,return 1就是在for语句里执行,拿这个return 1在for语句里执行后返回到函数里的是 “1”,函数语句就变成了
{1;
return 0;}    ?
我知道我这个想法肯定是错的···但这个应该怎么理解? 难道return 1在for语句里不是返回到1?还是return 1直接把函数返回到1?关于这个return 1的作用范围有点迷惑,我是初学者可能问题比较简单 ,希望大神解释一下~~多谢了


作者: 周宇华    时间: 2014-3-22 12:04
return语句的返回值是给函数的,执行return语句后整个函数就结束了。
你的代码中,执行了return 1后,不再进行循环,函数直接结束了。
作者: 晓sea    时间: 2014-3-22 12:08
周宇华 发表于 2014-3-22 12:04
return语句的返回值是给函数的,执行return语句后整个函数就结束了。
你的代码中,执行了return 1后,不再 ...

那意思是  只要在函数里执行到了return 那就退出或者返回某个值?不管它在多少层循环里循环,是这样么

作者: 脸皮猴    时间: 2014-3-22 12:13
晓sea 发表于 2014-3-22 12:08
那意思是  只要在函数里执行到了return 那就退出或者返回某个值?不管它在多少层循环里循环,是这样么
...

恩,楼上给你解释的很对。return是跳出整个函数。不会考虑你再哪一层循环,直接跳出整个函数。
作者: 晓sea    时间: 2014-3-22 12:16
脸皮猴 发表于 2014-3-22 12:13
恩,楼上给你解释的很对。return是跳出整个函数。不会考虑你再哪一层循环,直接跳出整个函数。 ...

哦 了解了~~  顺便问一下   C要不要学的很深··因为前两天才学,而且还要上班,学得很纠结,后面oc和ios编程时对C的要求很高么?
作者: 罗冠坤    时间: 2014-3-22 13:14
上面的语句的作用是:
循环字符串中的每一个字符
当循环的字符串中的字符与形参上面的字符相等,就返回1,也就是(true)并终止循环
如果没有匹配的字符,就返回0,也就是(false)
作者: 脸皮猴    时间: 2014-3-22 13:43
晓sea 发表于 2014-3-22 12:16
哦 了解了~~  顺便问一下   C要不要学的很深··因为前两天才学,而且还要上班,学得很纠结,后面oc和ios ...

应该照着基础视频走就行了,暂时不用纠结要不要搞那么深。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2