五、函 数

一、概念

(一)函数的作用:

在这里插入图片描述

(二)函数的功能:

在这里插入图片描述

(三)函数的分类:

在这里插入图片描述

(四)函数示例:

int main(){
	max(4,3,2);
	max(4,7,9);
	return 0;
}

int max(int a,int b,int c){//a b c为形参 
	int max;
	if(a > b){
		max = a;
	}else{
		max = b;
	}
	if(c > max){
		max = c;
	}
	printf("%d\n",max);
}

二、定义和调用

(一)定义:

在这里插入图片描述若无返回值,则返回值类型为void

(二)调用:

1.一般格式:

在这里插入图片描述
注:形参在未被调用时不分配内存空间

2.无参无返回值:

int main(){
	show();
	return 0; 
}

void show (){
	printf("我是无参无返回值!");
}

3.无参有返回值:

int main(){
	int i = show();
	printf("%d\n",i);//输出2(返回值)
	return 0; 
}

int show (){
	printf("我是无参有返回值!\n");
	return 2; 
}

若函数类型和返回值类型不一致,以函数类型为准,例如:

int main(){
	printf("%d\n",show());//输出3
	return 0; 
}

int show(){
	return 3.14; 
}

注:返回值可以是常量 变量 表达式

4.有参无返回值:

int main(){
	show(2); 
	return 0; 
}

void show(int a){
	printf("我是有参无返回值!\n");
	printf("%d",a);
}

5.有参有返回值:

int main(){
	max(4,3,2);
	max(4,7,9);
	return 0;
}

int max(int a,int b,int c){//a b c为形参 
	int max;
	if(a > b){
		max = a;
	}else{
		max = b;
	}
	if(c > max){
		max = c;
	}
	printf("%d\n",max);
}

注:有参时必须传入参数,并且个数 类型必须保持一致
实参可以是变量 常量 表达式。

pt:假为0,真为1:

int main(){ 
	printf("%d",show());//输出0
	return 0; 
}

int show(int a){
	return 1>2;
}

三、return和exit(0)的区别:

在这里插入图片描述return终止函数,exit(0)终止整个程序

四、函数声明:

如果定义的函数在main之后,需要函数声明,否则有waring,将函数定义拷贝到main函数前面,去掉函数体:

int show();//函数声明
int main(){ 
	printf("%d",show());
	return 0; 
}

int show(){
	return 1>2;
}

函数声明的作用:便于编译器找到函数

五、作用域

(一)局部变量:

1.概念:

在这里插入图片描述变量执行定义后会分配内存空间;变量使用遵循就近原则

2.静态局部变量:

在这里插入图片描述

void show();
int main(){
	show();//2
	show();//3
	show();//4
	return 0;
} 

void show(){
	static int a = 1;
	a ++;
	printf("%d ",a);
}

在这里插入图片描述

问:为什么输出结果为 2 3 4?
静态变量的值赋值一次,初始化为2,调用一次后初值变为3,依次变化
若静态没有赋初值,则系统自动赋值为0

普通局部变量和静态局部变脸的不同:

从内存分配看:
普通局部变量只有执行到定义变量的语句,才会分配内存 ,而静态局部变量在编译阶段已经分配好了内存;普通局部变量离开{}后,它的值自动释放,,静态局部变量只有整个程序结束后才会自动释放
从初始化角度看:
普通局部变量不初始化,若不赋值,则值为随机值,静态变量若不赋值,值为0

(二)全局变量:

1.概念:

在这里插入图片描述

int a = 10;//全局变量 
int main(){
	printf("%d",a);
	return 0;
}

全局变量不初始化,默认为0
全局变量的声明:extern int a;告诉编译器,int a 的定义在后面
全局变量的声明可以多次,但定义必须一次

2.静态全局变量:

在这里插入图片描述static全局变量的作用域时文件作用域,extern只适用普通全局变量,且普通全局变量所有文件可以使用,提前声明即可;static全局变量只能在本文件使用

六、总结:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值