函数一些功能的补充

21 阅读2分钟

练习:

写一个函数,计算两个整数中的较大值,并返回

#include<stdio.h>
int getBigger(int n, int j, int i){
	return n > j ? n : j;
}

int main(){
	int rst = getBigger(10,20);
	printf("%d", rst);
	return 0;
} 

结果如下:

image.png 写一个函数,计算三个整数中的最大值,并返回

#include<stdio.h>
int getBigger(int n, int j, int i){
	if(n > j){
		if(n > i){
			return n;
		}else {
			return i;
		}
	}else if(j > i){
		return j;
	}else{
		return i;
	}
}

int main(){
	int rst = getBigger(10,20,30);
	printf("%d", rst);
	return 0;
} 

结果如下:

image.png 第二个代码中很明显的可以将if优化掉,优化后结果:

#include<stdio.h>
int getBigger(int n, int j, int i){
	return (n > j ? n : j) > i ? (n > j ? n : j) : i;
}

int main(){
	int rst = getBigger(10,20,30);
	printf("%d", rst);
	return 0;
} 

结果一样:

image.png

三个要素:

(1)功能:做什么用?

(2)参数:我提供什么?

形参:定义函数时候,()中的内容
实参:调用函数时候,()中的内容

(3)返回值:他会给我什么?

return用来设置函数的返回值。

要点:与定义函数时的类型保持一致。
定义函数的格式:
返回值类型|或者是void函数名(形参){
return返回值
}

例如下列代码中:

#include<stdio.h>
int f(){
	printf("a");
	printf("b");
	printf("c");
	return 10 * 5;
	
}

int main(){
	int rst = f();
	printf("%d", rst);
	return(0);
}

此时会运行上述所有数值:

image.png

但将其位置改变后:

#include<stdio.h>
int f(){
	printf("a");
	printf("b");
	return 10 * 5;
	printf("c");
}

int main(){
	int rst = f();
	printf("%d", rst);
	return(0);
}

只会运行return之前的数值:

image.png

由此可以得出return的作用:不仅仅是返回函数值,而且在return之后的代码不会被运行。

调用方式4种:

(1)作为表达式用

(2)作为语句调用

(3)作为函数的实参调用

(4)在一个函数中调用另一个函数

int getBig2(int a, int b){
	if(a > b){
		return a;
	}else{
		return b;
	}
} 

int getBig3(int x, int y, int z){
	int k = getBig2(x, y);
	return getBig2(k, z);
}

int f32(int n){
	return n / 3 + 1;
}

void printfOK(){
	printf("\n*************************\n");
}
int main(){
	printf("%d", getBig3(1,2,3));
	printfOK();
	
	int rst = f32(10) * 20;
	printf("%d", rst);
	
	printfOK();
	
	int rst1 = f32(f32(10));
	printf("%d", rst1);
}