C语言程序设计第4章函数与编译预处理.ppt
《C语言程序设计第4章函数与编译预处理.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计第4章函数与编译预处理.ppt(43页珍藏版)》请在三一办公上搜索。
1、1,第4章 函数与编译预处理,C 语言程序设计,2,第4章 函数与编译预处理,4.1 函数概述4.2 函数定义与调用4.3 局部变量和全局变量4.4 变量的生存期和存储类别4.5 编译预处理,3,4.1 函数概述,4.1.1 函数简介,4,【例】,#include void print_line()/*函数定义*/printf(*n);void print_text()/*函数定义*/printf(Welcome to Beijing n);void main()print_line();/*函数调用*/print_text();/*函数调用*/print_line();/*函数调用*/,5,
2、void main函数 调用函数 print_line();,6,一个C源程序可以由一个或多个源程序文件组成。C编译系统在对C源程序进行编译时是以文件为单位进行的。一个C源程序文件可以由一个或多个函数组成。所有函数都是独立的。主函数可以调用其它函数,其它函数可以相互调用。在一个C程序中,有且仅有一个主函数main。C程序的执行总是从main函数开始,调用其它函数后最终回到main函数,在main函数中结束整个程序的运行。,说明,7,函数的种类,从使用的角度看:标准函数(库函数)库函数是由系统提供的。如:getchar()、sin(x)等。在程序中可以直接调用它们。附录B列出了C的部分库函数。用
3、户自定义函数。如:例中的print_line()函数。,8,由C编译系统定义的一种函数,存放在系统函数库中,用户可以根据需要随时调用常用函数如:fabs、sqrt、sin、pow、rand(常用数学函数参见教材P100 表4-1和附录B)函数调用形式:函数名(参数表)例如:sqrt(x),4.1.2 数学库函数,9,例,#include#include void main()float x=4.5;printf(%f,%f,%fn,sqrt(x),pow(x,2),fabs(-x);,输出结果:2.121320,20.250000,4.500000,10,4.2.1 函数的定义,函数定义的一般
4、形式,函数类型 函数名(类型名 形式参数1,)说明语句 执行语句,例如:求两个数的最大值。int max(int x,int y)int z;z=x y?x:y;return(z);,4.2 函数定义及调用,11,#includeint cube(int y);/*函数原型声明*/void main()int x,last,nowcb;last=1;printf(15之间,相邻两数的立方差是:n);for(x=2;x=5;x+)nowcb=cube(x);/*函数调用*/printf(%d,nowcb-last);last=nowcb;printf(n);,/*函数定义*/int cube(i
5、nt y)/*函数首部*/return y*y*y;,例4-1 编写一个函数cube,计算整数的立方。,花括号中也可以为空,这种函数叫空函数。不能在函数体内定义其他函数,即函数不能嵌套定义。,12,函数名(实参表列),在C语言中,把函数调用也作为一个表达式。因此凡是表达式可以出现的地方都可以出现函数调用。例如:welcome();/*函数调用语句*/if(iabs(a)max)max=iabs(a);/*函数调用构成表达式*/m=max(c,max(a,b);/*函数调用作为函数参数*/,4.2.2 函数的调用,函数调用的一般形式:,13,void swap(int x,int y)int z
6、;z=x;x=y;y=z;printf(nx=%d,y=%d,x,y);main()int a=10,b=20;swap(a,b);printf(na=%d,b=%dn,a,b);,4.2.3 函数参数传递与返回值,1函数的参数传递(值传递),程序输出结果:x=20,y=10a=10,b=20,形式参数(形参),实际参数(实参),【例】编一程序,将主函数中的两个变量的值传递给swap函数中的两个形参,交换两个形参的值。,14,有关形参和实参的说明:,当函数被调用时才给形参分配内存单元。调用结束,所占内存被释放。实参可以是常量、变量或表达式,但要求它们有确定的值。实参与形参类型要一致,字符型与整
7、型兼容。实参与形参的个数必须相等。在函数调用时,实参的值赋给与之相对应的形参。“单向值传递”。,15,函数的返回值是通过return语句带回到主调函数的,功能:终止函数的运行,返回主调函数,若有返回值,将返回值带回主调函数。,说明:若函数没有返回值,return语句可以省略。return语句中的表达式类型一般应和函数的类型一致,如果不一致,系统自动将表达式类型转换为函数类型。,2.函数的返回值,return 语句格式:,return;或 return 表达式;,16,【例】计算并输出圆的面积。,#include s(int r)return 3.14*r*r;void main()int r;
8、scanf(%d,自动转换为int型,程序运行情况如下:212,说明:函数的类型决定了函数返回值的类型。若省略函数的类型,系统默认其为int型。无返回值的函数应将其类型定义为void(空)类型。,17,【例4-8】编写函数实现两组变量的显示,定义2组,共8个整型变量a1a4,b1b4,要求:输入字符a和整数1,显示a1变量的值,输入字符b和整数1,显示b1变量的值,18,#include int ArrayOperating(int i,char ch)int a1=1,a2=0,a3=3,a4=5;int b1=2,b2=0,b3=4,b4=3;switch(i)case 1:switch(
9、ch)case a:return a1;case b:return b1;case 2:case 3:case 4:,void main()int i;char ch;printf(输入显示的变量,形式如:a1或b4:);scanf(%c%d,19,4.2.4 函数的嵌套调用,main函数 调用函数 A;,20,【例】函数的嵌套调用,main()int n=3;printf(%dn,sub1(n);,sub1(int n)int i,a=0;for(i=n;i0;i-)a+=sub2(i);return a;,sub2(int n)return n+1;,程序输出结果:9,21,4.2.5 对
10、被调函数的声明和函数原型,变量要先定义后使用,函数也如此。即被调函数的定义要出现在主调函数的定义之前。如swap函数.,void swap(int x,int y)main()swap(a,b);,main()c=max(a,b);max(int x,int y),允许整型函数(且参数也是整型)的定义出现在主调函数之后。如max函数.,22,对被调函数进行声明的一般形式,函数类型 函数名(参数类型1 参数名1,);或 函数类型 函数名(参数类型1,参数类型2,);,第二种形式省略了参数名,此种形式也称为函数的原型。,如果非整型函数在主调函数之后定义,则应在主调函数中或主调函数之前对被调函数进行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 函数 编译 预处理

链接地址:https://www.31ppt.com/p-6504136.html