为了账号安全,请及时绑定邮箱和手机立即绑定

return i是返回到哪里,给个确切的地方

#include <stdio.h>
int getIndex(int arr[5],int value)
{
    int i;
    for(i=0;i<5;i++)
    {
        if(arr[i] == value)
        {
            return i;
        }
    }
    return -1;
}

int main()
{
    int arr[5]={3,12,9,8,6};
    int value = 8;
    int index = getIndex(arr, value);      //这里应该传什么参数呢?
    if(index!=-1)
    {
        printf("%d在数组中存在,下标为:%d\n",value,index);            
    }
    else
    {
        printf("%d在数组中不存在。\n",value);   
    }
    return 0;   
}

虽然说是输入错误但是输出是正确的,我想问几个问题

  1. 在执行循环结构时候在执行完return i;是立刻跳出循环结构然后结束整个getlndex函数吗,但是答案为什么要加break

  2. 概念上说return的返回值是给主函数,那返回到主函数的哪里,是返回到getlndex(arr, value)?

  3. 答案getlndex函数定义了个index这样有什么好处




正在回答

2 回答

1.是,只要执行到return i;循环就结束了,return会,赋值不会。break会结束本层循环;

https://img1.sycdn.imooc.com//5be2b66500019a7903550343.jpg

2.返回到getlndex函数然后赋值给 index 了。

3.定义index的好处是,函数内部只会有一个返回值一个出口;

你这一段就会有两个出口,好像是便于后期维护和排错,比如贴的图,要在两个地方验证;



2 回复 有任何疑惑可以回复我~
  1. 第一你写的循环体出错了,少了一个else,第二执行完return i之后不会跳出循环体,还循环直到i不满足条件时才会跳出循环。

  2. 对,返回到  int index = getIndex(arr, value);(等号的右边,然后在赋值给index)

  3. 我看了答案,感觉有些地方很多余,不需要在函数getindex中定义index也可以


0 回复 有任何疑惑可以回复我~
#1

Ibuki_suga 提问者

但是我的输出结果和答案一样啊,我试过把100输入给value,程序输出结果是:100在数组中不存在。这证明return -1;是能够被执行的。如果是按你这么说的话执行完return i;之后是执行完循环体再立刻跳出getlndex函数吗。大佬不要坑我哟
2018-10-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

return i是返回到哪里,给个确切的地方

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号