C语言函数返回值及其类型
通常希望通过函数调用,不仅完成一定的操作,还要返回一个确定的值,这个值就是函数的返回值。我们知道函数有两种,一种是带返回值的,另一种是不带返回值的。那么函数的返回值是如何得到的,又有什么要求?通过阅读本文您将得到答案。
在 cube() 函数的函数体中,定义变量 z 得到 x 的立方值,然后通过 return 将 z 的值(z 即函数的返回值)返回到调用它的主调函数中,将结果赋给 b,最后在主函数中输出 b。
return 语句后面的值也可以是表达式,如【示例1】中的 cube() 函数可以改写为:
return 语句有两种格式:
也就是说,return 后面的表达式可以加括号,也可以不加括号。return 语句的执行过程是首先计算表达式的值,然后将计算结果返回给主调函数。示例中的 return 语句还可以写成:
按上述规定,用户输入的数为 4.5,则先将 z 的值转换为整型 91(即去掉小数部分),然后 cube(x)带回一个整型值 91 回到主调函数 main()。如果将 main() 函数中的 b 定义成浮点型,用%f格式控制符输出,则输出 91.000000。
具体代码如下:
printdiamond() 函数完成的只是输出一个图形,因此不需要返回任何的结果,所以不需要写 return 语句。此时函数的类型使用关键字 void,如果省略不写,系统将认为返回值类型是 int 型。
在子函数中执行 “if(a>b)return a; ” ,当条件满足时则返回 a 的值,条件不满足就执行下面的语句 “return b;”,就是返回 b。这里尽管有两个 return 语句,但不管执行到哪个 return 语句,都将返回一个值。
C语言函数的返回值
C语言函数的返回值是通过函数中的 return 语句实现的。return 语句将被调用函数中的一个确定值返回给主调函数,如下面的示例。示例1
编写 cube() 函数用于计算 x3。代码如下:#include<stdio.h> long cube(long x) /*定义函数cube(),返回类型为long*/ { long z; z=x*x*x; return z; /*通过return返回所求结果,结果类型也应为long*/ } int main() { long a,b; printf("请输入一个整数:"); scanf("%ld",&a); b=cube(a); printf("%ld的立方为:%ld",a,b); }运行结果:
请输入一个整数:34
34的立方为:39304
在 cube() 函数的函数体中,定义变量 z 得到 x 的立方值,然后通过 return 将 z 的值(z 即函数的返回值)返回到调用它的主调函数中,将结果赋给 b,最后在主函数中输出 b。
return 语句后面的值也可以是表达式,如【示例1】中的 cube() 函数可以改写为:
long cube(long x)
{
return x*x*x;
}
return 语句有两种格式:
- return expression。
- return(expression)。
也就是说,return 后面的表达式可以加括号,也可以不加括号。return 语句的执行过程是首先计算表达式的值,然后将计算结果返回给主调函数。示例中的 return 语句还可以写成:
return (z);
C语言函数返回值的类型
在定义函数时,必须指明函数的返回值类型,而且 return 语句中表达式的类型应该与函数定义时首部的函数类型是一致的,如果二者不一致,则以函数定义时函数首部的函数类型为准。示例2
改写【示例1】,代码如下:#include<stdio.h> int cube(float x) /*定义cube()函数,返回类型为int*/ { float z; /*定义返回值为z,类型为float*/ z=x*x*x; return z; /*通过return返回所求结果*/ } int main() { float a; int b; printf("请输入一个数:"); scanf("%f",&a); b=cube(a); printf("%f的立方为:%d\n",a,b); }运行结果:
请输入一个数:4.5
4.500000的立方为:91
按上述规定,用户输入的数为 4.5,则先将 z 的值转换为整型 91(即去掉小数部分),然后 cube(x)带回一个整型值 91 回到主调函数 main()。如果将 main() 函数中的 b 定义成浮点型,用%f格式控制符输出,则输出 91.000000。
注意:初学者应该做到函数类型与 return 语句返回值的类型一致。
如果一个函数不需要返回值,则将该函数指定为 void 类型,此时函数体内不必使用 return 语句。在调用该函数时,执行到函数末尾就会自动返回主调函数。示例3
编写 printdiamond() 函数,用于输出如下图形。
***********
***********
***********
具体代码如下:
#include<stdio.h> void printdiamond () /*定义一个无返回值的函数,返回类型应为void*/ { printf("***********\n"); printf(" ***********\n"); printf(" ***********\n"); } int main() { printdiamond(); /*调用printdiamond()函数*/ }运行结果
***********
***********
***********
printdiamond() 函数完成的只是输出一个图形,因此不需要返回任何的结果,所以不需要写 return 语句。此时函数的类型使用关键字 void,如果省略不写,系统将认为返回值类型是 int 型。
技巧:无返回值的函数通常用于完成某项特定的处理任务,如【示例3】中的打印图形,或输入、输出、排序等。
一个函数中可以有一个以上的 return 语句,但只能有一个 return 语句被执行到,不论执行到哪个 return 语句,都将结束函数的调用返回主调函数,即带返回值的函数只能返回一个值。示例4
改写【示例1】,代码如下:#include<stdio.h> int max(int a,int b) /*定义函数max()*/ { if(a>b) /*如果a>b,返回a*/ return a; return b; /*否则返回b*/ } int main() { int x,y; printf("请输入两个整数:"); scanf("%d%d",&x,&y); printf("%d和%d的最大值为:%d\n",x,y,max(x,y)); }运行结果:
请输入两个整数:19 5
19和5的最大值为:19
在子函数中执行 “if(a>b)return a; ” ,当条件满足时则返回 a 的值,条件不满足就执行下面的语句 “return b;”,就是返回 b。这里尽管有两个 return 语句,但不管执行到哪个 return 语句,都将返回一个值。
注意:如果要将多个值返回主调函数中,使用 return 语句是无法实现的。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。