函数返回值
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\ else c=max(a,b); z=y; printf(\"%d\\n\ 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的类型必须和函数返回类型相同,或者能够隐式转换为函数的返回类型的原因。 因篇幅问题不能全部显示,请点此查看更多更全内容