函数和宏定义.ppt
《函数和宏定义.ppt》由会员分享,可在线阅读,更多相关《函数和宏定义.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关于函数与宏定义第一张,PPT共四十七页,创作于2022年6月6.1 6.1 函数的概念函数的概念函数的分类:函数的分类:l 库函数(标准函数)库函数(标准函数)子函数的三要素:子函数的三要素:l 函数的调用函数的调用 l 函数的声明函数的声明l 函数的定义函数的定义 l 自定义函数:自定义函数:主函数:主函数:main main 子函数子函数第二张,PPT共四十七页,创作于2022年6月 返回值类型符返回值类型符 函数名函数名(形参说明表形参说明表)说明语句;说明语句;可执行语句;可执行语句;return(return(表达式表达式);函数头函数头函数体函数体函数返回值函数返回值return
2、(return(表达式表达式););返回值类型符返回值类型符 函数类型函数类型形参说明表形参说明表要素要素1 1:函数的定义:函数的定义第三张,PPT共四十七页,创作于2022年6月l 每一个形参都要单独定义数据类型。每一个形参都要单独定义数据类型。例:例:int abs_sum(int abs_sum(int m,int nint m,int n)int abs_sum(int abs_sum(int m,nint m,n)错误错误正确正确l 函数也可以没有形参函数也可以没有形参,此时最好标记为此时最好标记为voidvoid类型。类型。例:例:float fun(float fun(void
3、void)第四张,PPT共四十七页,创作于2022年6月l 若函数无返回值,则用空类型若函数无返回值,则用空类型voidvoid来定义函数的来定义函数的 返回值。返回值。voidvoid abs_sum(int m,int nabs_sum(int m,int n)if(m0)m=-m;if(m0)m=-m;if(n0)n=-n;if(n0)n=-n;printf(“The sum is%dn”,m+n);printf(“The sum is%dn”,m+n);return;return;第五张,PPT共四十七页,创作于2022年6月l 若在函数的首部省略了函数返回值的类型名,则若在函数的首部
4、省略了函数返回值的类型名,则 默认函数返回值的类型为默认函数返回值的类型为intint类型。类型。int int abs_sum(int m,int nabs_sum(int m,int n)if(m0)m=-m;if(m0)m=-m;if(n0)n=-n;if(n0)n=-n;return(m+n);return(m+n);第六张,PPT共四十七页,创作于2022年6月returnreturn语句语句 格式格式1 1:return(return(表达式表达式););l returnreturn只能返回只能返回0 0或或1 1个值,而不能返回多个值。个值,而不能返回多个值。int fun(in
5、t a,int b)int fun(int a,int b)int c;int c;c=a+b;c=a+b;return(a,b,c);return(a,b,c);错误错误格式格式3 3:return;return;格式格式2 2:return return 表达式表达式;等价等价函数类型为函数类型为voidvoid时用,可以缺省时用,可以缺省第七张,PPT共四十七页,创作于2022年6月l 函数体中可以有多个函数体中可以有多个returnreturn语句,但语句,但只有一个只有一个 returnreturn语句被执行到。语句被执行到。int fun(int a)int fun(int a)i
6、f(a0)if(a0)return a;if(a0)return a;else return a;else return a;l 函数中没有函数中没有returnreturn语句,并不代表函数没有语句,并不代表函数没有returnreturn 值,只是表示函数的返回值是一个不确定的数。值,只是表示函数的返回值是一个不确定的数。第八张,PPT共四十七页,创作于2022年6月l 函数无返回值时:函数无返回值时:函数名函数名(实参表实参表););要素要素2 2:函数的调用:函数的调用l 函数有返回值时:变量名函数有返回值时:变量名=函数名函数名(实参表实参表););例例6-16-1分析:分析:P11
7、7P117mainmain7 7-12-12abs_sumabs_sumx xy yz zm mn n7 71919-12-121212第九张,PPT共四十七页,创作于2022年6月例例6-16-1:求任意两个整数的绝对值的和。:求任意两个整数的绝对值的和。#include#include int abs_sum(int m,int n);int abs_sum(int m,int n);void main()void main()int x,y,z;int x,y,z;scanf(“%d%d”,&x,&y);scanf(“%d%d”,&x,&y);z=abs_sum(x,y);z=abs_s
8、um(x,y);printf(“|%d|+|%d|=%dn”,x,y,z);printf(“|%d|+|%d|=%dn”,x,y,z);int abs_sum(int m,int n)int abs_sum(int m,int n)if(m0)m=-m;if(m0)m=-m;if(n0)n=-n;if(n0)n=-n;return(m+n);return(m+n);函数调用:实参函数调用:实参函数定义:形参函数定义:形参方法方法1 1:第十张,PPT共四十七页,创作于2022年6月l 形参变量在接收到实参表传过来的值时,会在形参变量在接收到实参表传过来的值时,会在 内存临时开辟新的空间内存临时
9、开辟新的空间,以保存形参变量的值。以保存形参变量的值。l 当函数执行完毕时,这些临时开辟的内存空间当函数执行完毕时,这些临时开辟的内存空间 空间会被释放。空间会被释放。l 形参的值在函数中不论是否发生变化,都不会形参的值在函数中不论是否发生变化,都不会 影响到实参变量的值。影响到实参变量的值。l 实参与形参要求在个数、类型、次序上匹配。实参与形参要求在个数、类型、次序上匹配。l 实参实参/形参的名称可以相同,也可以不同形参的名称可以相同,也可以不同。第十一张,PPT共四十七页,创作于2022年6月方法方法2 2:#include#include void abs_sum(int x,int y
10、);void abs_sum(int x,int y);void main()void main()int x,y;int x,y;scanf(“%d%d”,&x,&y);scanf(“%d%d”,&x,&y);abs_sum(x,y);abs_sum(x,y);void abs_sum(int x,int y)void abs_sum(int x,int y)if(x0)x=-x;if(x0)x=-x;if(y0)y=-y;if(y0)y=-y;printf(“The sum is%dn”,x+y);printf(“The sum is%dn”,x+y);第十二张,PPT共四十七页,创作于2
11、022年6月例例6-26-2:求任意三个整数的绝对值的和。:求任意三个整数的绝对值的和。方法方法1 1:#include#include int abs_sum(int m,int n);int abs_sum(int m,int n);void main()void main()int x,y,z,sum;int x,y,z,sum;scanf(“%d%d%d”,&x,&y,&z);scanf(“%d%d%d”,&x,&y,&z);sum=abs_sum(abs_sum(x,y),z);sum=abs_sum(abs_sum(x,y),z);printf(“|%d|+|%d|+|%d|=%d
12、n”,x,y,z,sum);printf(“|%d|+|%d|+|%d|=%dn”,x,y,z,sum);int abs_sum(int m,int n)int abs_sum(int m,int n)if(m0)m=-m;if(m0)m=-m;if(n0)n=-n;if(n0)n=-n;return(m+n);return(m+n);函数调用:实参函数调用:实参函数定义:形参函数定义:形参第十三张,PPT共四十七页,创作于2022年6月方法方法2 2:#include#include int abs_sum(int l,int m,int n);int abs_sum(int l,int m
13、,int n);void main()void main()int x,y,z,sum;int x,y,z,sum;scanf(“%d%d%d”,&x,&y,&z);scanf(“%d%d%d”,&x,&y,&z);sum=abs_sum(x,y,z);sum=abs_sum(x,y,z);printf(“|%d|+|%d|+|%d|=%dn”,x,y,z,sum);printf(“|%d|+|%d|+|%d|=%dn”,x,y,z,sum);int abs_sum(int l,int m,int n)int abs_sum(int l,int m,int n)if(l0)l=-l;if(l0
14、)l=-l;if(m0)m=-m;if(m0)m=-m;if(n0)n=-n;if(n0)n=-n;return(l+m+n);return(l+m+n);第十四张,PPT共四十七页,创作于2022年6月例例6-36-3:求任意两数的乘积。:求任意两数的乘积。#include#include float mul(float a,float b);float mul(float a,float b);void main()void main()float x,y,z;float x,y,z;scanf(“%f%f”,&x,&y);scanf(“%f%f”,&x,&y);z=mul(x,y);z=
15、mul(x,y);mul(x,y);mul(x,y);printf(“(%f)*(%f)=%fn”,x,y,printf(“(%f)*(%f)=%fn”,x,y,mul(x,y)mul(x,y););float mul(float a,float b)float mul(float a,float b)return a*b;return a*b;函数调用函数调用1 1:有变量接收返回值:有变量接收返回值函数调用函数调用2 2:无变量接收返回值:无变量接收返回值函数调用函数调用3 3:直接输出返回值:直接输出返回值第十五张,PPT共四十七页,创作于2022年6月 在调用无参函数时,实参表列可以省
16、略,但括号不在调用无参函数时,实参表列可以省略,但括号不能省略。能省略。#include#include void fun(void);void fun(void);void main()void main()fun();fun();void fun(void)void fun(void)int a=1,b=2;int a=1,b=2;printf(“(%d,%d)n”,a+=3,b-=2);printf(“(%d,%d)n”,a+=3,b-=2);return;return;函数调用:实参可以省略函数调用:实参可以省略函数定义:形参用函数定义:形参用voidvoid声明声明第十六张,PPT共
17、四十七页,创作于2022年6月#include#include void a(void);void a(void);void b(void);void b(void);void c(void);void c(void);void main()void main()a();a();b();b();c();c();void a(void)void a(void)void b(void)void b(void)void c(void)void c(void)函数调用:实参可以省略函数调用:实参可以省略函数定义:形参用函数定义:形参用voidvoid声明声明例例6-46-4:第十七张,PPT共四十七页
18、,创作于2022年6月 返回值类型符返回值类型符 函数名函数名(形参说明表形参说明表););例:例:int abs_sum(int m,int n);int abs_sum(int m,int n);int abs_sum(int,int);int abs_sum(int,int);第第1 1个问题:写法个问题:写法等价等价要素要素3 3:函数的声明:函数的声明 函数声明在形式上与函数头完全一致,只是在最后多了函数声明在形式上与函数头完全一致,只是在最后多了一个分号。一个分号。第十八张,PPT共四十七页,创作于2022年6月第第2 2个问题:缺省情况个问题:缺省情况l 函数返回值类型为函数返回
19、值类型为intint型。型。l 被调函数的定义写在前面,主调函数写在后面。被调函数的定义写在前面,主调函数写在后面。编写程序时最好写上函数声明。编写程序时最好写上函数声明。#include#include float mul(float a,float b)float mul(float a,float b)return a*b;return a*b;void main()void main()例例6-36-3:第十九张,PPT共四十七页,创作于2022年6月第第3 3个问题:作用个问题:作用 目的是让目的是让C C语言的编译程序语言的编译程序检查检查对函数的调用对函数的调用是否正确。是否正确
20、。例:例:#include#include int abs_sum(int m,int n);int abs_sum(int m,int n);void main()void main()int x,y,z,sum;int x,y,z,sum;scanf(“%d%d%d”,&x,&y,&z);scanf(“%d%d%d”,&x,&y,&z);sum=abs_sum(x,y,z);sum=abs_sum(x,y,z);printf(“The sum is%dn”,sum);printf(“The sum is%dn”,sum);int abs_sum(int m,int n)int abs_su
21、m(int m,int n)第二十张,PPT共四十七页,创作于2022年6月第第4 4个问题:位置个问题:位置例:例:#include#include void fun1(int a,int b);void fun1(int a,int b);void main()void main()void fun1(int a,int b)void fun1(int a,int b)int fun2(float x,float y)int fun2(float x,float y).位置位置1 1:在所有函数的外部:在所有函数的外部函数声明函数声明函数函数fun1()fun1()可以被可以被main()
22、main()、fun2()fun2()调用。调用。第二十一张,PPT共四十七页,创作于2022年6月例:例:#include#include void main()void main()void fun1(int a,int b);void fun1(int a,int b);void fun1(int a,int b)void fun1(int a,int b)int fun2(float x,float y)int fun2(float x,float y).位置位置2 2:在某一个函数的内部:在某一个函数的内部函数声明函数声明函数函数fun1()fun1()只能被只能被main()mai
23、n()调用。调用。第二十二张,PPT共四十七页,创作于2022年6月例:例:#include#include void main()void main()void fun1(int a,int b)void fun1(int a,int b)void fun1(int a,int b);void fun1(int a,int b);int fun2(float x,float y)int fun2(float x,float y).位置位置3 3:在某两个函数之间:在某两个函数之间函数声明函数声明函数函数fun1()fun1()只能被只能被fun2()fun2()调用。调用。第二十三张,PPT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 定义
限制150内