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;
}
虽然说是输入错误但是输出是正确的,我想问几个问题
在执行循环结构时候在执行完return i;是立刻跳出循环结构然后结束整个getlndex函数吗,但是答案为什么要加break
概念上说return的返回值是给主函数,那返回到主函数的哪里,是返回到getlndex(arr, value)?
答案getlndex函数定义了个index这样有什么好处
1.是,只要执行到return i;循环就结束了,return会,赋值不会。break会结束本层循环;
2.返回到getlndex函数然后赋值给 index 了。
3.定义index的好处是,函数内部只会有一个返回值一个出口;
你这一段就会有两个出口,好像是便于后期维护和排错,比如贴的图,要在两个地方验证;
第一你写的循环体出错了,少了一个else,第二执行完return i之后不会跳出循环体,还循环直到i不满足条件时才会跳出循环。
对,返回到 int index = getIndex(arr, value);(等号的右边,然后在赋值给index)
我看了答案,感觉有些地方很多余,不需要在函数getindex中定义index也可以
C语言入门
926895 学习 · 21509 问题
相似问题
回答 2
回答 2