第占章 函数
6 第六章 函 数
第六章函数 要编好程序,就要合理地划分程序中的各个 程序块,C语言中称这种程序块为函数。 本章介绍函数的定义、调用方法及与函数应 用相关的问题。 2021年2月20日星期六
2 2021年2月20日星期六 第六章 函数 要编好程序,就要合理地划分程序中的各个 程序块,C语言中称这种程序块为函数。 本章介绍函数的定义、调用方法及与函数应 用相关的问题
6.1函数概述 函数( Function)是按给定的任务,把相关语句组织在一起 的程序块,也称为例程或过程。 函数分为标准库函数和用户自定义函数 标准库函数:可以在任何程序中使用的公共函数,由C 编译器提供。 用户自定义函数:必须按C要求通过函数定义、函数说 明,才能被调用,由用户自定义。 程序从main(开始,一个函数可以调用其他函数,也可 以被其他函数调用。 函数与函数之间通过传递参数和返回值相联系。 C不允许函数嵌套定义。在一个函数中再定义一个函数 是非法的。 2021年2月20日星期六
3 2021年2月20日星期六 函数(Function)是按给定的任务,把相关语句组织在一起 的程序块,也称为例程或过程。 函数分为标准库函数和用户自定义函数。 标准库函数:可以在任何程序中使用的公共函数,由C 编译器提供。 用户自定义函数:必须按C要求通过函数定义、函数说 明,才能被调用,由用户自定义。 程序从main( )开始,一个函数可以调用其他函数,也可 以被其他函数调用。 函数与函数之间通过传递参数和返回值相联系。 C不允许函数嵌套定义。在一个函数中再定义一个函数 是非法的。 6.1函数概述
6.2函数定义和调用 6.2.1函数定义 定义的一般形式 返回值类型定义符函数名(形式参数表 例如: 函数体 int area s int a, int b) return(a*b) 其中: 函数名—给自定义的函数取的名字。 形式参数表—函数被调用时,接收调用函数传递的实参数。 函数体执行功能的语句块。 ←类型定义符—通过函数调用获得的函数返回值,通常用 return语句返回。类型定义符是指函数返回值的数据类型 4 2021年2月20日星期六
4 2021年2月20日星期六 6.2.1 函数定义 定义的一般形式: 返回值类型定义符 函数名(形式参数表) { 函数体 } 其中: 函数名—给自定义的函数取的名字。 形式参数表—函数被调用时,接收调用函数传递的实参数。 函数体—执行功能的语句块。 类型定义符—通过函数调用获得的函数返回值,通常用 return语句返回。类型定义符是指函数返回值的数据类型。 例如: int area_s(int a ,int b) { return(a*b) } 6.2函数定义和调用
1.无参函数的一般形式 类型说明符函数名0 类型说明 语句 例6.1:定义一个无参函数(61.cpp) void Helloo printf( Hello, how do you do. In"); 2021年2月20日星期六
5 2021年2月20日星期六 1.无参函数的一般形式 类型说明符 函数名() { 类型说明 语句 } 例6.1:定义一个无参函数(6_1.cpp) void Hello() { printf("Hello, how do you do. \n"); }
2有参函数的一般形式 类型说明符函数名(形式参数表) 形式参数类型说明 类型说明 语句 例6.2:函数,求两个数中较小的数(6_2.cpp) int min(int a, int b) if(a>b)return b: else return a 2021年2月20日星期六
6 2021年2月20日星期六 2有参函数的一般形式 类型说明符 函数名(形式参数表) 形式参数类型说明 { 类型说明 语句 } 例6.2: 函数,求两个数中较小的数(6_2.cpp) int min(int a, int b) { if(a>b) return b; else return a; }
6.2.2函数调用 (1)函数调用的一般格式: 函数名(实参数表); (2)调用实质: 程序执行流程转向由函数名指定的被调用函数。 实参数一—对应地传递给函数定义中的形参数 执行函数定义中的函数体。 执行结束,通过 return语句将值返回到调用处 程序执行流程返回调用处。执行后面的语句 2021年2月20日星期六
7 2021年2月20日星期六 6.2.2 函数调用 (1)函数调用的一般格式: 函数名(实参数表); (2)调用实质: 程序执行流程转向由函数名指定的被调用函数。 实参数一一对应地传递给函数定义中的形参数。 执行函数定义中的函数体。 执行结束,通过return语句将值返回到调用处。 程序执行流程返回调用处。执行后面的语句
(3)函数调用的几种情况 函数调用语句 pr instar( 函数调用返回值构成表达式 C=2*area s(I, w 函数调用返回值作为函数实参数 m=max(a, max(b, c)) 2021年2月20日星期六
8 2021年2月20日星期六 (3)函数调用的几种情况 函数调用语句 printstar( ); 函数调用返回值构成表达式 C=2*area_s(l,w); 函数调用返回值作为函数实参数 m=max(a,max(b,c));
例如 main() int Iv scanf(%d,&D) =cube(i) *函数调用返回值赋给变量v* pr intf("cube=%d\n?, v) int cube(int x) *自定义函数*/ int cb cb=x*x*x return(cb) /*函数返回值* 输入:5 输出:cube=125 2021年2月20日星期六
9 2021年2月20日星期六 例如: main( ) { int i,v; scanf(”%d”,&i); v=cube(i); /* 函数调用返回值赋给变量v */ printf(”cube=%d\n”,v); } int cube(int x) /* 自定义函数 */ { int cb; cb=x*x*x; return(cb); /* 函数返回值 */ } 输入: 5 输出: cube=125
6,2.3函数原型 函数原型( Funct ion Prototyping)是一条程序语句,必须 以分号结束。它由函数返回类型、函数名和参数表构成,其形式 与函数定义的头部相似。 格式:返回类型函数名(参数表); 对于用户自己定义的函数,只要函数调用点在自定义函 数之前,程序员必须在源代码中说明函数原型。函数原型可不 包含形参数变量名,只包含形参数类型名。 如 注意:当前很多编译程序对所有函数, 无论什么情况,都要求写函数原型 int area s(int a,in 以帮助函数调用时的错误查找。因此 b); 对程序所使用的所有函数都写函数原 也可简写为: 型,是一种好的编程风格。 int area s(int, int) 2021年2月20日星期六
10 2021年2月20日星期六 如: int area_s(int a,int b); 也可简写为: int area_s(int ,int); 注意:当前很多编译程序对所有函数, 无论什么情况,都要求写函数原型, 以帮助函数调用时的错误查找。因此 对程序所使用的所有函数都写函数原 型,是一种好的编程风格。 6.2.3 函数原型 函数原型(Function Prototyping)是一条程序语句,必须 以分号结束。它由函数返回类型、函数名和参数表构成,其形式 与函数定义的头部相似。 格式: 返回类型 函数名(参数表); 对于用户自己定义的函数,只要函数调用点在自定义函 数之前,程序员必须在源代码中说明函数原型。函数原型可不 包含形参数变量名,只包含形参数类型名