<1>从函数中返回值
————————return:如果我们所定义的函数要返回一个结果,那么我们就需要用return将这个结果交给所调用的函数。
(1)注意:返回类型
我们以一段代码为例:
int isprime(int i){
int ret=1;
int k;
for(k=2;k<i-1;k++ ){
if(i%k==0){
ret=0;
break;
}
}
return ret;
}
在这段代码中,isprime有一个返回的类型为int,也就是说这个isprime会返回一个int的结果,所以我们需要安排一个return语句来返回这个结果。
(2)单一出口
我们以一段代码为例:
int max(int a,int b){
int ret;
if(a>b){
ret=a;
}else{
ret=b;
}
return ret;
}
在这段代码中,我们可以直接将if-else语句中的ret=a/b换成return a/b;但是这样就不符合单一出口的要求,单一出口意为仅有一个return。
(3)return 语句
- 一旦出现return 语句,就意味着函数停止执行,并送回一个值;
- return有两种表达形式:1.return;2.return 表达式;
- 同时一个函数里可以出现多个return语句,我们以示例的代码为例进行修改
————————————————
int max(int a,int b){
//int ret;————在此处我们不再选择定义一个变量ret,
if(a>b){
return a;——————我们在这里对ret a进行修改,直接返回a值,而不再通过ret变量
}else{
return b;——————这里返回b值同上返回a值
}
}//return ret;————————我们在前面直接返回a,b的值,这里就不用重复返回
注意:这种方法并不推崇,因为多个return会导致程序有多个出口,不利于后续对出口进行修改。
(4)补充————在函数可以返回值后,我们可以将值赋给变量;还可以将值再传递给函数;甚至可以将其舍弃。
1.接下来我们以一段代码为例
#include<stdio.h>
int max(int a,int b){
if(a>b){
return a;
}else{
return b;
}
}
int main(){
int a,b,c;
a=5;
b=6;
c=max(10,12);
c=max(a,b);
c=max(c,23);
max(23,45);——————//在此处我们仅调用了函数,但是并没有将函数交给任何变量,编译仍然成功
printf("%d\n",max(a,b));
return 0;
}
——————由此可见我们调用函数的目的不一定是注意返回的结果,而是观察函数调用的副作用(在函数执行中进行的操作);
(5)没有返回值的函数
- void函数名(参数表);
- 不能使用带值的return;
- 可以没有return;
- 调用的时候不能做返回值的赋值