函数

分而治之的思想————>模块化编程

把一个问题,分解为若干个简单的问题,提炼出公共任务,把不同的功能分解到不同的模块中
复杂问题求解的基本方法,模块化编程的基本思想

函数

构成C语言的基本模块,模块化编程的最小单位

C语言的逻辑结构

一个C语言由多个源文件组成
一个源文件有一个或者多个函数组成

函数的分类

  • 标准库函数
  • ANSI/ISO
  • 自定义函数

函数的定义

//返回值类型 函数名 形式参数(parameter)简称形参,函数的入口;
int GetMax(int x, int y) {

	int result;
	if (x > y)
		result = x;
	else 
		result = y;
	return result;
}
//函数体 使用定界符(花括号{})

int result 为局部变量 只能能在函数内部使用,intx,int y 也是局部变量;

如何将x,y的值返回给调用者?

使用return语句:从函数返回一个值给调用者。
函数的出口只能返回一个值,类型与返回值类型一致;
可以使用多个return语句,一般在条件语句中使用
return后无表达式或者没有return;
在返回值类型处使用void表示无返回值,省略默认为int
若在形参处省略不写,或者添加void,表示无参数,可以省略;

使用函数编程的好处

信息隐藏 无需知道内部如何运作,只了解与外部的接口即可,只要对外提供的接口不变,就不影响函数的使用,便于实现函数的复用和模块化编程

函数调用的基本方式

  • 主调函数通过函数名调用被调函数;
  • 函数无返回值时,单独作为一个函数调用语句
#include<stdio.h>
int main()

{
	Displaying();
	return 0;
}
void Displaying (void)
{

	printf("1.input");
	printf("2.output");
	printf("0.exit");
	return;
}
  • 调用者通过函数名调用函数
  • 有返回值时,可以放到一个赋值表达式语句中
#include<stdio.h>
int main()
{
	int a = 23, b = 24;
	printf("%d\n",Average (a,b);
	return 0;
}
int Average(int x, int y)
{
	int result;
	result = (x + y) / 2;

	return result;
}
  • 还可以放到一个函数调用语句中,作为另外一个函数的参数

函数定义时的参数,形式参数,简称形参
函数调用时的参数,实际参数,简称实参;

函数调用的过程:

每次执行函数调用时:
现场保护并为函数内部的局部变量分配内存
把实参复制一份给形参,单项传值
实参与形参的数目类型和顺序要一致;

程序控制权交给被调函数,执行函数内的语句

当执行到return语句时,从函数中退出

从函数退出时

根据函数调用栈中保存的返回地址,返回到本次函数调用的地方
把函数值返回给主调函数,同时把控制权返回给调用者
返回调用权之前,收回分配给函数内所有变量包括形参的内存(及释放

main函数的特殊性

最终返回到main函数中结束

函数原型

调用函数前先声明返回值类型,函数名,和形参类型
有助于编译器函数参数类型的匹配检查

为了将两个函数连接,需要加一条函数声明

posted @ 2020-10-19 13:40  calizo  阅读(147)  评论(0编辑  收藏  举报