A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

晓sea

初级黑马

  • 黑马币:0

  • 帖子:7

  • 精华:0

© 晓sea 初级黑马   /  2014-3-22 11:57  /  1208 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 晓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的作用范围有点迷惑,我是初学者可能问题比较简单 ,希望大神解释一下~~多谢了

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

6 个回复

正序浏览
晓sea 发表于 2014-3-22 12:16
哦 了解了~~  顺便问一下   C要不要学的很深··因为前两天才学,而且还要上班,学得很纠结,后面oc和ios ...

应该照着基础视频走就行了,暂时不用纠结要不要搞那么深。
回复 使用道具 举报
上面的语句的作用是:
循环字符串中的每一个字符
当循环的字符串中的字符与形参上面的字符相等,就返回1,也就是(true)并终止循环
如果没有匹配的字符,就返回0,也就是(false)
回复 使用道具 举报
脸皮猴 发表于 2014-3-22 12:13
恩,楼上给你解释的很对。return是跳出整个函数。不会考虑你再哪一层循环,直接跳出整个函数。 ...

哦 了解了~~  顺便问一下   C要不要学的很深··因为前两天才学,而且还要上班,学得很纠结,后面oc和ios编程时对C的要求很高么?
回复 使用道具 举报
晓sea 发表于 2014-3-22 12:08
那意思是  只要在函数里执行到了return 那就退出或者返回某个值?不管它在多少层循环里循环,是这样么
...

恩,楼上给你解释的很对。return是跳出整个函数。不会考虑你再哪一层循环,直接跳出整个函数。
回复 使用道具 举报
周宇华 发表于 2014-3-22 12:04
return语句的返回值是给函数的,执行return语句后整个函数就结束了。
你的代码中,执行了return 1后,不再 ...

那意思是  只要在函数里执行到了return 那就退出或者返回某个值?不管它在多少层循环里循环,是这样么
回复 使用道具 举报
return语句的返回值是给函数的,执行return语句后整个函数就结束了。
你的代码中,执行了return 1后,不再进行循环,函数直接结束了。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马