返回值类型
通过前面的讲解可知,函数的返回值是指函数被调用之后,返回给调用者的值。函数的返回值具体语法格式如下:
return 表达式;
return后面表达式的类型和函数定义返回值的类型应保持一致。如果不一致,就有可能会报错。如果函数没有返回值,可以直接在return语句后面加分号或省略return语句。需要注意的是,如果函数没有返回值,函数返回值类型要定义为void。
return语句将函数调用结果返回给调用者,函数调用就结束了,因此return语句的深层含义就是结束函数的执行。在函数体内,无论代码实现多么复杂,只要函数在执行时遇到return语句,函数执行就会立即结束,return语句后面的代码不会再执行。
下面通过一个案例演示return语句的作用,该案例要求定义一个函数,用于比较两个整数大小并返回较大的数据,如果两个整数相等,则返回0,具体如例1所示。
例1 return.c
1 #define _CRT_SECURE_NO_WARNINGS
2 #include <stdio.h>
3 int compare(int x, int y) //定义compare()函数
4 {
5 if (x > y)
6 return x; //调用return语句
7 else if (x < y)
8 return y; //调用return语句
9 else
10 return 0; //调用return语句
11 }
12 int main()
13 {
14 int a, b,ret;
15 printf("请输入两个整数:");
16 scanf("%d%d", &a, &b);
17 ret = compare(a, b);
18 printf("%d\n", ret);
19 return 0;
20 }
例1运行结果如图1所示。
图1 例1运行结果
在例1中,第3~11行代码实现了比较两个整数大小的compare()函数,该函数通过if…else if…else选择结构语句比较两个整数大小,如果满足条件就通过return语句返回结果。第14~16行代码,定义了程序需要的变量,并调用scanf()函数从键盘输入两个整数并赋值给变量a、b;第17~18行代码调用compare()函数比较a和b的大小,将返回结果赋值给ret变量,并调用printf()函数输出ret的值。
由图1可知,当从屏幕上输入56、48时,返回结果为56。在compare()函数调用过程中,会先执行第5行代码,满足条件之后执行第6行代码,通过return语句返回较大值,函数调用结束,后面第7~10行代码不再执行。