问答详情
源自:6-6 数组的应用(二)

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这样有什么好处




提问者:Ibuki_suga 2018-10-25 15:26

个回答

  • 慕粉0247298809
    2018-11-07 18:02:43
    已采纳

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

    https://img1.mukewang.com/5be2b66500019a7903550343.jpg

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

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

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



  • 卡布奇诺qi
    2018-10-26 16:34:51

    1. 第一你写的循环体出错了,少了一个else,第二执行完return i之后不会跳出循环体,还循环直到i不满足条件时才会跳出循环。

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

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