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

来源:6-6 数组的应用(二)

Ibuki_suga

2018-10-25 15:26

#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回答

  • 慕粉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也可以


    Ibuki_...

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

    2018-10-26 17:00:28

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926895 学习 · 21509 问题

查看课程

相似问题