函数返回值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
函数返回值
1.不带返回值的函数:return;
不带返回值的函数的返回类型为void,这样的函数会在函数的最后一个语句完成时隐式调用return;也可以在函数的结尾显式地调用return;
对于任意一个函数,只要执行了return语句,函数就强制结束了。
对于返回类型为void的函数,如果不显式地调用return;则只有在函数结束时才会隐式调用。可以在函数执行的某一阶段,显式地调用return;来结束函数,不再执行return语句之后的函数部分。
由于break语句只能用于循环和switch语句中,因此,想要结束if语句直接退出函数,可用return;
只有一种情况下,返回类型为void的函数可以使用return expression这一形式,那就是返回另一个返回类型同样是void的函数的调用结果。
如:
void A() void B()
{ {
.... ....
.... ....
return; return A();
} }//因为A返回类型为void,所以可以这样调用。
2.具有返回值的函数:return expression;
代码:
int max(int x,int y) #include
{ int main()
int z; {
if(x>=y) int a,b,c;
z=x; scanf("%d%d",&a,&b);
else c=max(a,b);
z=y; printf("%d\n",c);
return z; return 0;
} }
在main函数中调用max函数,函数调用语句为max(a,b);
仔细研究一下max(a,b)。
对于一个表达式来说,它要完成一定的功能,还要返回一个操作结果(即表达式的值)。如i++,它的功能是使变量i的值加1,它的值是i自增前的值。同样的,函数调用也同样如此:max(a,b)的功能是把实参a,b的值传递给形参并执行函数中的各个语句;max(a,b)的值是一个int类型的值。
++i的值是i自增后的值,相当于i=i+1,return i;对于i++来说,它的值是i自增前的值,那么如何获得这个值呢?编译器是这样做的:编译器自动创建一个临时变量并用i自增前的值来初始化这个临时变量。用这个临时变量的值来作为i++这个表达式的值。
同样的,执行max(a,b)后,首先完成参数传递并执行函数max中的各条语句。接着创建一个int型的临时变量并用return expression中expression的值来初始化这个临时变量。临时变量的类型为函数的返回值类型,即函数名之前的类型名。对max()函数来说就是int。
这也是为什么要求expression的类型必须和函数返回类型相同,或者能够隐式转换为函数的返回类型的原因。