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