C语言 函数的返回值

通过函数调用使主调函数能得到一个确定的值,这就是函数值(函数的返回值)。
1.函数的返回值是通过函数中的return语句获得的。
return语句将被调用函数中的一个确定值带回到主调函数中去。如果需要从被调函数带回一个函数值(供主调函数使用),被调函数中必须包含return语句。如果不需要从被调函数带回函数值,可以不要return语句。
一个函数可以有一个以上的return语句,执行到哪一个return语句 ,哪一个return语句起作用。return后面的值也可以是一个表达式。例如

Max(int x,int y)
{
    
    
	return (x>y?x:y);
}

2.函数值的类型
既然函数有返回值,这个值当然应属于某一确定的类型,应当在定义函数时指定函数值的类型。例如下面是3个函数的首行:

int Max(float x,float y)    //函数值为整型
char Letter(char c1,char c2)     //函数值为字符型
double Min(int x,int y)     //函数值为双精度型

注意:在定义函数时要指定函数类型。
3.在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致。
如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。对数值型数据,可以自动进行类型转换。即函数类型决定返回值的类型。
例题:将在Max函数中定义的变量z改为float型。函数返回值类型与指定函数类型不同。

int Max(float x, float y)
{
    
    
	float z;
	if (x > y)
	{
    
    
		z = x;
	}
	else
		z = y;
	return z;
}
int main()
{
    
    
	float a, b;;
	printf("输入要比较的两个整数:\n");
	scanf("%f%f", &a, &b);
	int c;
	c = Max(a, b);
	printf("Max=%d", c);
	return 0;
}

输出:
请添加图片描述
【程序分析】
Max函数的形参是float型,在main函数中输入给a和b的值是1.5和2.6。在调用Max(a,b)时,把a和b的值1.5和2.6传递给形参x和y。执行函数Max中的if else语句,是的变量z得到的值为2.6。出现矛盾:函数定义为int型,return语句中的z为float型,要把z的值作为函数的返回值,二者不一致。按照赋值规则处理,先将z的值转换为int型,得到2,它就是函数得到的返回值。最后Max(x,y)带回一个整型值2返回主调函数main。
4.对于不带回值的函数,应当定义函数为“void类型”(或称“空类型”)。
这样系统就保证不使函数带回任何值,即禁止在调用函数中使用被调用函数的返回值。此时在函数体中不能出现return语句。

猜你喜欢

转载自blog.csdn.net/NuYoaH502329/article/details/127862992#comments_25900592