C语言函数PPT课件.ppt
《C语言函数PPT课件.ppt》由会员分享,可在线阅读,更多相关《C语言函数PPT课件.ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、模块化程序设计函数孙小松1 C语言程序设计 第第 6 章章 模块化程序设计函数模块化程序设计函数26.1 函数的概念C程序结构C C程序结构如图所示程序结构如图所示1.1.一个一个C C程序可以分为若干个函数程序可以分为若干个函数2.2.每个程序有且只有一个主函数每个程序有且只有一个主函数(main),(main),其他都是子函数其他都是子函数3.3.子函数可以相互调用子函数可以相互调用, ,但主函数不能被但主函数不能被调用调用4.4.一个一个C C源程序由一个或多个文件构成源程序由一个或多个文件构成, ,每个文件就是一个编译单位每个文件就是一个编译单位 C语言程序设计 第第 6 章章 模块化
2、程序设计函数模块化程序设计函数3说明说明: :1.1.一个一个C C程序的执行从主函数程序的执行从主函数(main)(main)开始开始, ,调用其他函数后仍回到调用其他函数后仍回到mainmain主函数结束主函数结束. .2.2.每个子函数都是平行的每个子函数都是平行的, ,任何子函数都任何子函数都不从属于其他函数不从属于其他函数3.3.从用户角度从用户角度, ,函数可以分为函数可以分为: : 标准函数标准函数, ,即库函数即库函数 用户自定义函数用户自定义函数4.4.从函数形式可以分为从函数形式可以分为: : 无参函数无参函数:printstar:printstar()() 有参函数有参函
3、数:printf(“hello:printf(“hello”)”)#include void printStar() printf(“*n”);void printMessage() printf(“Hello, world.n”); printStar();void main() printStar(); printMessage(); C语言程序设计 第第 6 章章 模块化程序设计函数模块化程序设计函数4函数定义的一般形式函数定义的一般形式函数定义的一般形式: : 类型说明类型说明 函数名函数名(形式参数说明形式参数说明) 函数体函数体 形式参数说明方法形式参数说明方法: : 数据类型数据
4、类型 变量名变量名,类型类型 变量名变量名 无参数函数定义形式无参数函数定义形式: : 类型说明类型说明 函数名函数名()() 函数体函数体 void printHellovoid printHello()() printf(“hello!n printf(“hello!n”);”); 有参数函数定义形式有参数函数定义形式: : 类型说明类型说明 函数名函数名( (形式参数说明形式参数说明) ) 函数体函数体 int sum(int x, intint sum(int x, int y) y) int int z; z; z=x+y z=x+y; ; return(z return(z););
5、 C语言程序设计 第第 6 章章 模块化程序设计函数模块化程序设计函数5函数体函数体一般情况下一般情况下, ,函数体有两部分组成函数体有两部分组成: : 局部变量说明局部变量说明 语句语句; ; 局部变量说明局部变量说明: : 函数体内的变量函数体内的变量. .其有效范围仅在本函数其有效范围仅在本函数体内起作用体内起作用, ,离开本函数无意义离开本函数无意义. .int sum(int x, intint sum(int x, int y) y) int int z; z; /局部变量定义局部变量定义 z=x+yz=x+y; ; return(z return(z);); C语言程序设计 第第
6、 6 章章 模块化程序设计函数模块化程序设计函数6函数的参数和函数的值一个程序由若干个函数组成一个程序由若干个函数组成, ,各函数各函数调用时经常要传递一些数据调用时经常要传递一些数据, ,即即调用函调用函数数把数据传递给把数据传递给被调用函数被调用函数, ,经过经过被调被调用函数用函数处理后处理后, ,得到一个确定的结果得到一个确定的结果, ,在在返回返回调用函数调用函数时时, ,将结果带回将结果带回调用函数调用函数. .#include stdio.h#include int max(int x, intint max(int x, int y) y) int int z; z; z=(x
7、y) ? x : y; z=(xy) ? x : y; return(z return(z);); void main()void main() int a,b,c int a,b,c; ; scanf(“%d%d”,&a scanf(“%d%d”,&a, &b);, &b); c = max(a c = max(a, b);, b); printf(“max is %dn”,c printf(“max is %dn”,c);); 主函数主函数子函数子函数 . . c = max(a,bc = max(a,b);); . .int max (intx, intint max (intx, in
8、t y) y) . . . . . .return (z); return (z); a,bz各函数之间数据往来通过各函数之间数据往来通过参数传递参数传递和和返回语句返回语句实现实现 C语言程序设计 第第 6 章章 模块化程序设计函数模块化程序设计函数7函数参数函数参数: :用于函数间数据的传递用于函数间数据的传递形式参数形式参数: :定义函数定义函数时给出的参数时给出的参数实际参数实际参数: :调用函数调用函数时给出的参数时给出的参数#include stdio.h#include int max(int max(intint x, intx, int y y) ) int int z; z
9、; z=(xy) ? x : y; z=(xy) ? x : y; return(z return(z);); void main()void main() int a,b,c int a,b,c; ; scanf(“%d%d”,&a scanf(“%d%d”,&a, &b);, &b); c=max( c=max( a a , , b b ); ); printf(“max is %dn”,c printf(“max is %dn”,c);); 对于函数对于函数max有两个形式参数有两个形式参数x,y形式参数形式参数x和和y只在只在max函数中使用函数中使用a,b是主函数中定义的变量是主函数
10、中定义的变量, 当当main函数调用函数调用max函数时函数时. a,b成为成为max的实际参数的实际参数调用时调用时, 实际参数的值赋给形参进行处理实际参数的值赋给形参进行处理例例:max接受到两个值接受到两个值:23 89max返回返回89一、形式参数和实际参数一、形式参数和实际参数 C语言程序设计 第第 6 章章 模块化程序设计函数模块化程序设计函数8#include stdio.h#include int max(int max(intint x, intx, int y y) ) int int z; z; z=(xy) ? x : y; z=(xy) ? x : y; return
11、(z return(z);); void main()void main() int a,b,c int a,b,c; ; scanf(“%d%d”,&a scanf(“%d%d”,&a, &b);, &b); c=max( c=max( a a , , b b ); ); printf(“max is %dn”,c printf(“max is %dn”,c);); 说明说明:1.定义函数时定义函数时,必须说明形参的类型必须说明形参的类型,形参只能形参只能 是是变量变量(包括数组包括数组). 不能是常量或表达式不能是常量或表达式2.函数被调用之前函数被调用之前,形参和子函数中的变量形参和子函
12、数中的变量不占内存不占内存,调用结束返回调用结束返回,形参所占的内存被收回形参所占的内存被收回.3.实参可以是实参可以是常量、变量或表达式常量、变量或表达式. 因为传递过来的是具体数值因为传递过来的是具体数值.4.实参和形参类型必须一致实参和形参类型必须一致(或可以安全转换或可以安全转换).5.C语言中语言中,实参和形参传递的是实参和形参传递的是”按值传递按值传递”,即单向传递即单向传递, 只与参数相对位置有关只与参数相对位置有关,而与而与变量名无关变量名无关int b, int aintint c; c;c=( ab ) ? a :b;c=( ab ) ? a :b;return(cretu
13、rn(c););1320main-amain-bmax-amax-b1320 C语言程序设计 第第 6 章章 模块化程序设计函数模块化程序设计函数9#include int sum(int a, int b) a=a+b; b=a+b; return(a);void main() int a=1,b=3,c; c=sum(a,b); printf(“sum of %d,%d is %dn”,a,b,c);阅读下面程序,写出运行结果阅读下面程序,写出运行结果函数被调用之前函数被调用之前,形参和子函数中的变量形参和子函数中的变量不占内存不占内存,调用结束返回调用结束返回,形参所占的内存被收回形参所
14、占的内存被收回.实参和形参传递的是实参和形参传递的是”值传递值传递”,即单向传递即单向传递, 只与参数相对位置有关只与参数相对位置有关,而与而与变量名无关变量名无关sum of 1,3 is 4sum of 1,3 is 4 C语言程序设计 第第 6 章章 模块化程序设计函数模块化程序设计函数10二、函数返回值二、函数返回值#include stdio.h#include int max(int max(intint x, intx, int y y) ) int int z; z; z=(xy) ? x : y; z=(xy) ? x : y; return(z return(z);); v
15、oid main()void main() int a,b,c int a,b,c; ; scanf(“%d%d”,&a scanf(“%d%d”,&a, &b);, &b); c=max( c=max( a a , , b b ); ); printf(“max is %dn”,c printf(“max is %dn”,c);); 函数值也就是函数的返回值函数值也就是函数的返回值,是一个是一个具体确定的值具体确定的值.函数使用函数使用returnreturn语句返回值。语句返回值。一个函数内可以有多个一个函数内可以有多个returnreturn语句,语句,执行到任何执行到任何returnr
16、eturn语句,函数都将立即语句,函数都将立即返回到调用函数返回到调用函数if(xif(xy)y) return(x return(x););elseelse return(y return(y););returnreturn后面的后面的()()可以省略可以省略, ,可以返回可以返回一个表达式一个表达式, ,先求解表达式的值先求解表达式的值, ,再返回再返回. .int max(int x, intint max(int x, int y) y) return xy?x:y return xy?x:y; ; 1.1.返回函数值的方法返回函数值的方法 C语言程序设计 第第 6 章章 模块化程序设
17、计函数模块化程序设计函数11#include stdio.h#include int max(int max(intint x, intx, int y y) ) int int z; z; z=(xy) ? x : y; z=(xy) ? x : y; return(z return(z);); void main()void main() int a,b,c int a,b,c; ; scanf(“%d%d”,&a scanf(“%d%d”,&a, &b);, &b); c=max( c=max( a a , , b b ); ); printf(“max is %dn”,c printf
18、(“max is %dn”,c);); 2.函数值的类型函数值的类型 函数的类型即函数值的类型函数的类型即函数值的类型. .例如例如, ,函数函数 maxmax是是intint型型, ,函数的返回值也是函数的返回值也是intint型型. .省略了类型说明的函数就是省略了类型说明的函数就是intint型型. .returnreturn中表达式的值一般和函数中表达式的值一般和函数类型相同类型相同. .如果不一致如果不一致, ,则需要进行类型转换则需要进行类型转换. .以以 函数类型为准函数类型为准. . C语言程序设计 第第 6 章章 模块化程序设计函数模块化程序设计函数123.不需要返回的函数不
19、需要返回的函数如果函数中没有如果函数中没有return, return, 认为是认为是 一个过程一个过程, ,可以使用类型可以使用类型void.void.如果一个函数被声明如果一个函数被声明voidvoid类型类型, ,就不允许就不允许 再引用它的返回值。只能单纯调用它。再引用它的返回值。只能单纯调用它。#include void printStar() printf(“*n”);void printMessage() printf(“Hello, world.n”); printStar();void main() printStar(); printMessage(); C语言程序设计 第
20、第 6 章章 模块化程序设计函数模块化程序设计函数13函数的调用一、函数调用一般形式一、函数调用一般形式一般形式一般形式: 函数名函数名(实参列表实参列表)说明说明: :如果调用无参函数如果调用无参函数, ,实参表列可以忽略实参表列可以忽略, , 但括号不能省但括号不能省. .实参个数和形参个数相同实参个数和形参个数相同. .实参和形参类型一一对应实参和形参类型一一对应, ,必要时会进必要时会进行类型转换行类型转换. .注意注意: :不同系统中不同系统中, ,实参的计算顺序不同实参的计算顺序不同. . 一般认为从右到左一般认为从右到左计算和计算和赋值赋值. . 一般在调用函数前计算出实参的值一
21、般在调用函数前计算出实参的值例1 读程序,写出结果#include int f(int a, int b) int c; if(a b) c = 1; else if(a = b) c = 0; else c = -1; return c;void main() int i = 2, p; p = f(i, +i); printf(“%d”, p); C语言程序设计 第第 6 章章 模块化程序设计函数模块化程序设计函数14二、函数调用方式二、函数调用方式1、函数语句、函数语句 形式为形式为: :函数函数( (实参表列实参表列););例如例如: :printMessageprintMessage
22、();();printf(“%d”,pprintf(“%d”,p););说明说明: :这种方式不要求函数带返回值这种方式不要求函数带返回值, ,函数只执行一定操作函数只执行一定操作. .2 2、函数表达式函数表达式 函数的返回值参与运算函数的返回值参与运算例如例如: :m = max(a,bm = max(a,b););m = 3 m = 3 * * max(a,b max(a,b););printf(“%d”,max(a,bprintf(“%d”,max(a,b););说明说明: :这种方式的函数不能用于这种方式的函数不能用于voidvoid类型类型 C语言程序设计 第第 6 章章 模块化程
23、序设计函数模块化程序设计函数15三、函数调用的执行过程三、函数调用的执行过程从右到左的顺序从右到左的顺序, ,计算实参中各计算实参中各表达式值表达式值. .按照位置按照位置, ,将实参的值一一将实参的值一一传递给形参传递给形参. .执行被调用函数执行被调用函数. .当遇到当遇到return(return(表达式表达式) )语句时语句时, ,计算表达式的值并返回主调函数计算表达式的值并返回主调函数. .例2 读程序,写出结果#include int iabs(float x) return (x 0 ? x : -x);void main() float x = -0.6, y; y = iab
24、s(2 * x); printf(“x=%f,iabs(x)=%fn”, x, y);1234X= -0.600000,iabs(x)=1.000000 C语言程序设计 第第 6 章章 模块化程序设计函数模块化程序设计函数16四、函数的原形四、函数的原形在程序中调用函数需满足以下条件在程序中调用函数需满足以下条件: :被调用函数必须存在被调用函数必须存在, ,且必须遵循且必须遵循“先定义后使用先定义后使用”的原则的原则如果被调用函数的定义在主调函如果被调用函数的定义在主调函数之后数之后, ,可以在调用之前给出可以在调用之前给出原形原形说明说明. .原形说明原形说明: :类型说明类型说明 函数名
25、函数名( (参数类型参数类型, ,参数类型参数类型) ) C语言程序设计 第第 6 章章 模块化程序设计函数模块化程序设计函数17函数的嵌套调用嵌套调用是指在一个函数的函数体嵌套调用是指在一个函数的函数体中又调用了其他函数中又调用了其他函数. .程序执行过程程序执行过程: :第一层第一层 第二层第二层 第三层第三层 main() printStar() printStar(); printfMessage() printMessage(); printStar(); printStar(); 结束#include void printStar() printf(“*n”);void print
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 函数 PPT 课件
限制150内