《级C语言程序设计》第6章函数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
fn() { … fn1(); … fn2() … }
… …
f11() { … } f12() { … } f21() { … } f22() { … }
fn1() { … } fn2() { … }
第6章 函数
根据函数的定义者不同,分为如下两大类:
(1)标准函数:系统提供的已定义的函数,一般用户 都可以调用。如前面学习过的输入输出函数scanf、 printf、getchar、putchar等。Turbo C 2.0的部分常用 库函数见附录D。
第6章 函数
6.1 函数的定义和调用 6.1.2 函数调用
一个函数一旦被定义,就可以在程序的其他函数中使用它,
这个过程称为函数调用。
例:
#include<stdio.h> int max(int x,int y) {
int z; z=x>y?x:y; return(z); }
程序结果如下:
main() {
int a,b,c; scanf("%d%d",&a,&b); c=max(a,b); printf("max=%d",c); }
输入:10 20
输出:20
第6章 函数
6.1 函数的定义和调用 6.1.2 函数调用 一个函数一旦被定义,就可以在程序的其他函数中使用它, 这个过程称为函数调用。 3.说明
第6章 函数
6.1 函数的定义和调用 6.1.1 函数定义 说明:函数定义包括函数首部和函数体两部分。 (1)函数首部:函数定义的第一行。 1)函数名前面的类型标识符是指函数返回值的类型,简称 函数值类型。函数的返回值由函数中的return语句获得, 即return后的表达式的值,可以是简单类型、void类型或构 造类型等。当return后的表达式的类型与函数名前面的类 型标识符不一致时,以函数名前面的类型标识符为函数值 类型(即是将return后的表达式的值转换为函数名前面的 类型后作为函数值返回)。如果函数中无return语句,将 返回一个不确定值;如希望不返回值,可以定义函数类型 为void,当函数值类型为int时,可省略其类型的说明。
第6章 函数
6.1 函数的定义和调用 6.1.1 函数定义
函数定义的一般形式:
类型标识符 函数名(形式参数表列)
{ 说明部分
执行部分
} 例:
Hale Waihona Puke Baidu
int max(int x,int y) {
int z; if(x>y) z=x;
else z=y; return(z); }
/* 函数首部*/ /*函数体开始*/ /*说明部分*/ /*执行部分*/ /*函数体结束*/
(1)在定义函数中指定的形参变量,在未出现函数调用时,它们并不 占内存中的存储单元;只有发生函数调用时被调用函数中的形参才被 分配内存单元。调用结束后,形参所占用的内存单元也同时被释放。 (2)实参可以是常量、变量或表达式,但必须有确定的值。在调用时 将实参的值赋给形参变量。 (3)实参与形参的类型应一致。只有字符型和整型可以互相通用。 (4)实参变量对形参变量的数据传递是“值传递”,即单向传递,只 由实参传给形参,而不能由形参传回来给实参。在内存中,实参变量 与形参变量是不同的单元,即使同名,也是不同的单元。形参的值如 果发生改变,并不会改变主调函数的实参值。
(2)用户自定义函数:用户自己编写的用来解决具体 问题的函数。
第6章 函数
根据函数的参数形式,C语言函数又分为如下两种: (1)无参函数: 主调函数并不将数据传送给被调用函数。 (2)有参函数: 在调用函数时,在主调函数和被调函数之 间有参数传递,也就是说,主调函数可以将数据传送给被调 用函数使用,被调用函数中的数据也可以带回来供主调函数 使用。
第6章 函数
6.1 函数的定义和调用 6.1.1 函数定义 说明:函数定义包括函数首部和函数体两部分。 (1)函数首部:函数定义的第一行。 (2)函数体:函数说明之后的花括号“{ }”括起来的部分, 包括说明部分和执行部分。 1)声明部分:用来对函数中使用的变量和函数作说明。 2)执行部分:由基本语句组成,函数的功能由函数体内的 各个语句的执行来实现。
第6章 函数
6.1 函数的定义和调用 6.1.2 函数调用
一个函数一旦被定义,就可以在程序的其他函数中使用它,
这个过程称为函数调用。 main()
例:
{ int x=10,y=20;
printf("(1)x=%d y=%d\n",x,y);
#include<stdio.h>
swap(x,y);
swap(int x,int y)
第6章 函数
6.1 函数的定义和调用 6.1.1 函数定义 说明:函数定义包括函数首部和函数体两部分。 (1)函数首部:函数定义的第一行。 2)函数名是函数的标识符,遵循C语言标识符的命名规则, 区分大小写。 3)函数名后的形式参数表列给出函数的形式参数及其类型说 明。形式参数简称形参,形式参数及其类型说明放在函数名后 的一对圆括号中,要特别注意的是,无论函数是否有形式参数, 函数名后的圆括号不可省,并且圆括号之后不能接“;”。形式 参数表列的一般形式如下: 形参1类型 形参1,形参2类型 形参2,…,形参n类型 形参n
第6章 函数
6.1 函数的定义和调用 6.1.2 函数调用 一个函数一旦被定义,就可以在程序的其他函数中使用它, 这个过程称为函数调用。 1.函数调用的一般形式
函数名(实参表列); 2.函数调用语句的执行过程
首先计算每个实参表达式的值,并把此值存入所对应的 形参单元中,然后把执行流程转入函数体中,执行函数体中 的语句,当执行到函数体的右花括号或return语句时,表示 函数体执行完成,这时将返回到调用此函数的语句的下一条 语句,继续往下执行。
第6章 函数
结构化程序的模块结构:
主控模块
模块1
模块2
……
模块n
模块1.1 …… 模块1.n 模块2.1 …… 模块2.n 模块n.1 …… 模块n.n
第6章
程序结构 :
main() { … f1(); … f2(); … … fn(); … }
函数
f1() { … f11(); … f12(); … } f2() { … f21(); … f22(); … }
… …
f11() { … } f12() { … } f21() { … } f22() { … }
fn1() { … } fn2() { … }
第6章 函数
根据函数的定义者不同,分为如下两大类:
(1)标准函数:系统提供的已定义的函数,一般用户 都可以调用。如前面学习过的输入输出函数scanf、 printf、getchar、putchar等。Turbo C 2.0的部分常用 库函数见附录D。
第6章 函数
6.1 函数的定义和调用 6.1.2 函数调用
一个函数一旦被定义,就可以在程序的其他函数中使用它,
这个过程称为函数调用。
例:
#include<stdio.h> int max(int x,int y) {
int z; z=x>y?x:y; return(z); }
程序结果如下:
main() {
int a,b,c; scanf("%d%d",&a,&b); c=max(a,b); printf("max=%d",c); }
输入:10 20
输出:20
第6章 函数
6.1 函数的定义和调用 6.1.2 函数调用 一个函数一旦被定义,就可以在程序的其他函数中使用它, 这个过程称为函数调用。 3.说明
第6章 函数
6.1 函数的定义和调用 6.1.1 函数定义 说明:函数定义包括函数首部和函数体两部分。 (1)函数首部:函数定义的第一行。 1)函数名前面的类型标识符是指函数返回值的类型,简称 函数值类型。函数的返回值由函数中的return语句获得, 即return后的表达式的值,可以是简单类型、void类型或构 造类型等。当return后的表达式的类型与函数名前面的类 型标识符不一致时,以函数名前面的类型标识符为函数值 类型(即是将return后的表达式的值转换为函数名前面的 类型后作为函数值返回)。如果函数中无return语句,将 返回一个不确定值;如希望不返回值,可以定义函数类型 为void,当函数值类型为int时,可省略其类型的说明。
第6章 函数
6.1 函数的定义和调用 6.1.1 函数定义
函数定义的一般形式:
类型标识符 函数名(形式参数表列)
{ 说明部分
执行部分
} 例:
Hale Waihona Puke Baidu
int max(int x,int y) {
int z; if(x>y) z=x;
else z=y; return(z); }
/* 函数首部*/ /*函数体开始*/ /*说明部分*/ /*执行部分*/ /*函数体结束*/
(1)在定义函数中指定的形参变量,在未出现函数调用时,它们并不 占内存中的存储单元;只有发生函数调用时被调用函数中的形参才被 分配内存单元。调用结束后,形参所占用的内存单元也同时被释放。 (2)实参可以是常量、变量或表达式,但必须有确定的值。在调用时 将实参的值赋给形参变量。 (3)实参与形参的类型应一致。只有字符型和整型可以互相通用。 (4)实参变量对形参变量的数据传递是“值传递”,即单向传递,只 由实参传给形参,而不能由形参传回来给实参。在内存中,实参变量 与形参变量是不同的单元,即使同名,也是不同的单元。形参的值如 果发生改变,并不会改变主调函数的实参值。
(2)用户自定义函数:用户自己编写的用来解决具体 问题的函数。
第6章 函数
根据函数的参数形式,C语言函数又分为如下两种: (1)无参函数: 主调函数并不将数据传送给被调用函数。 (2)有参函数: 在调用函数时,在主调函数和被调函数之 间有参数传递,也就是说,主调函数可以将数据传送给被调 用函数使用,被调用函数中的数据也可以带回来供主调函数 使用。
第6章 函数
6.1 函数的定义和调用 6.1.1 函数定义 说明:函数定义包括函数首部和函数体两部分。 (1)函数首部:函数定义的第一行。 (2)函数体:函数说明之后的花括号“{ }”括起来的部分, 包括说明部分和执行部分。 1)声明部分:用来对函数中使用的变量和函数作说明。 2)执行部分:由基本语句组成,函数的功能由函数体内的 各个语句的执行来实现。
第6章 函数
6.1 函数的定义和调用 6.1.2 函数调用
一个函数一旦被定义,就可以在程序的其他函数中使用它,
这个过程称为函数调用。 main()
例:
{ int x=10,y=20;
printf("(1)x=%d y=%d\n",x,y);
#include<stdio.h>
swap(x,y);
swap(int x,int y)
第6章 函数
6.1 函数的定义和调用 6.1.1 函数定义 说明:函数定义包括函数首部和函数体两部分。 (1)函数首部:函数定义的第一行。 2)函数名是函数的标识符,遵循C语言标识符的命名规则, 区分大小写。 3)函数名后的形式参数表列给出函数的形式参数及其类型说 明。形式参数简称形参,形式参数及其类型说明放在函数名后 的一对圆括号中,要特别注意的是,无论函数是否有形式参数, 函数名后的圆括号不可省,并且圆括号之后不能接“;”。形式 参数表列的一般形式如下: 形参1类型 形参1,形参2类型 形参2,…,形参n类型 形参n
第6章 函数
6.1 函数的定义和调用 6.1.2 函数调用 一个函数一旦被定义,就可以在程序的其他函数中使用它, 这个过程称为函数调用。 1.函数调用的一般形式
函数名(实参表列); 2.函数调用语句的执行过程
首先计算每个实参表达式的值,并把此值存入所对应的 形参单元中,然后把执行流程转入函数体中,执行函数体中 的语句,当执行到函数体的右花括号或return语句时,表示 函数体执行完成,这时将返回到调用此函数的语句的下一条 语句,继续往下执行。
第6章 函数
结构化程序的模块结构:
主控模块
模块1
模块2
……
模块n
模块1.1 …… 模块1.n 模块2.1 …… 模块2.n 模块n.1 …… 模块n.n
第6章
程序结构 :
main() { … f1(); … f2(); … … fn(); … }
函数
f1() { … f11(); … f12(); … } f2() { … f21(); … f22(); … }