C语言PPT课件_C_06_函数

上传人:我*** 文档编号:144990165 上传时间:2020-09-15 格式:PPT 页数:42 大小:855KB
返回 下载 相关 举报
C语言PPT课件_C_06_函数_第1页
第1页 / 共42页
C语言PPT课件_C_06_函数_第2页
第2页 / 共42页
C语言PPT课件_C_06_函数_第3页
第3页 / 共42页
C语言PPT课件_C_06_函数_第4页
第4页 / 共42页
C语言PPT课件_C_06_函数_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《C语言PPT课件_C_06_函数》由会员分享,可在线阅读,更多相关《C语言PPT课件_C_06_函数(42页珍藏版)》请在金锄头文库上搜索。

1、,函数,函数,4,4,函数,本章内容,函数定义形式,无参函数调用,无参函数调用,A,C,D,E,B,1,main() printf(A); fun(); printf(B); ,return 语句,A,C,B,return 语句,void类型的函数中,如果有return语句,则return语句并不起到返回值的作用,而是起到结束函数调用,返回到被调的位置的作用 函数中也可以有多个return语句,这种情况下,当函数执行第一个return语句时就结束执行,返回调用它的函数(一般为主函数)。 return决定返回值的内容,如果函数中有return语句,则函数的返回值为return后面的参数值,如果函

2、数没有return语句,函数也有返回值,只是返回一个不确定的值。 有返回值的函数可以作为另外一个函数的实际参数,也可以作为表达式的一部分参与算术运算,有参函数调用,7,0,* 10;,有参函数调用,注意,1,有参函数调用,以下程序的运行结果是 void f(int n) int i; for (i = 0; i = n; i+) printf(#); main() f(1); printf(?); f(2); ,#?#,参数的传值方式,函数传值方式,void fun(int x, int y) int z; z = x, x = y, y = z; main() int a = 3, b =

3、4; fun(a, b); printf(%d,%d, a, b); ,3,4,3,4,3,4,4,3,3,1,有参函数调用,以下程序的运行结果是 void fun(int p) int d = 2; p = d+; printf(%d, p); main() int a = 1; fun(a); printf(%d, a); ,21,2,有参函数调用,以下程序的运行结果是 int f(int x) return x * 2; main() int n = 1, m; m = f(f(f(n); printf(%d, m); ,8,3,有参函数调用,以下程序的运行结果是 int f(int x

4、, int y) if (x != y) return (x+y)/2; else return x; main() int a = 4, b = 5, c = 6; printf(%d, f(2*a, f(b,c); ,6,参数的传地址方式,main() int a, b, *p, *w; p = ,指针与变量,3,4,3000,2000,3000,2000,3,4,void fun(int *p, int *w) *p = 3; *w = 4; main() int a, b; fun( ,参数的传地址方式,3,4,3000,2000,3000,2000,3,4,1,参数的传地址方式,vo

5、id fun(int *c, int d) *c = *c + 1; d = d + 1; printf(%d%d, *c, d); main() int a = 1, b = 1; fun( ,2221,函数原型声明,1,函数原型声明,程序中定义了函数fun,则以下选项中对该函数错误的声明是 double fun(double x, double y) return x + y; A)double fun(double x, y); B)double fun(double, double); C)double fun(double a, double b); D)double fun(dou

6、ble x, double y);,2,函数原型声明,以下程序的运行结果是 float f(float x); main() float a = 0; int i; for (i = 0; i 30; i += 10) a += f(float)i); printf(%5.0f, a); float f(float x) return x*x+1; ,503,全局变量与局部变量,1,变量作用域,以下程序的运行结果是 int a = 5; void fun(int b) int a = 10; a += b; printf(%d, a); main() int c = 20; fun(c); a

7、 += c; printf(%d, a); ,3025,2,变量作用域,以下程序的运行结果是 int k = 0; void fun(int m) k += m; printf(%d%d, m, k+); main() int i = 4; fun(i+); printf(%d%d, i, k); ,4455,函数调用自身的编程技巧称为递归。 它把一个大型复杂的问题层层转化为与原问题相似的规模较小的问题来求解。 采用递归能使程序变得简洁和清晰。,函数递归调用,main() fun(7); ,函数递归调用,7,7,3,3,3,7,main() printf(%d, f(3); ,函数递归调用,3

8、,3 *,2,2 *,1,1,2,6,1,函数递归调用,以下程序的运行结果是 void fun(int x) if (x/2 0) fun(x/2); printf(%d, x); main() fun(3); ,13,2,函数递归调用,以下程序的运行结果是 void fun(int x) if (x 0) fun(x - 1); printf(%d, x); main() fun(2); ,012,指向函数的指针,一个自定义函数的名字就是这个函数的指针 可以用一个指针变量指向函数,然后通过该指针变量调用此函数,指向函数的指针简称函数指针。 函数指针可以作函数参数,也可以作为函数的返回值,还可

9、以把函数指针存储在数组中,以及把它赋予其他的函数指针。,指向函数的指针,用于存储函数指针的变量称为指向函数的指针变量,定义方法为: 类型说明符 (*指针变量名)(形式参数列表) 例:int (*p)(int,int);表示定义了一个指针变量p,能够指向的函数特征是由两个整型形式参数,返回值是整型数据 调用方法(*p)(实参表),指向函数的指针,函数的调用可以通过函数名调用,也可以通过函数指针调用(即用指向函数的指针变量调用) 在给函数指针变量赋值时,只需给出函数名而不必给出参数,例:p=max; 用函数指针变量调用函数时,只需将(*p)代替函数名即可(p为指针变量名),在(*p)之后的括号中根

10、据需要写上实参。例:c= (*p)(a,b) 指向函数名的指针变量不可以进行算术运算如:p+,p-,p+n等,因为函数是作为一个整体的,只有一个入口,注意,指向函数的指针,int f(int a, int b) return a + b; main() int c, (*p)(); p = f; c = p(3,4); printf(%d, c); ,函数名是地址,f(3,4)或(*p)(3,4),或(*p)(int,int),1,指向函数的指针,填空,使以下程序可正常编译运行。 ; main() double x = 1.1, y = 2.2, (*p)() = avg; printf(%f

11、, (*p)(x,y); double avg(double a, double b) return (a+b)/2; ,double avg(double a, double b),返回指针的函数,区别函数指针和指针函数的技巧,函数指针和指针函数都是偏正短语。函数指针的中心词是指针,保存函数的地址。而指针函数的中心词是函数,是一个返回值是指针的函数。在判断时,按照优先级的结合性来判断,区别函数指针和指针函数的技巧,如:int *p()因为()的优先级高,先与p结合,所以p()是一个函数,函数作为中心词,又因为前有*,所以是一个返回值是指针的函数。 int (*p)()因为*先与p结合,所以整

12、体是一个指针,指针是中心词,又因为后面有(),所以是一个函数指针,保存函数的地址。,区别函数指针和指针函数,int f1(); 普通函数的说明 int *f2(); 表示f2()函数返回值为指向int的指针 int (*f3)(); 表示f3为指向函数的指针变量,该函数返回一个整型量,返回指针的函数,int *f(int *x, int *y) if (*x *y) return x; else return y; main() int a = 3, b = 4, *p; p = f( ,4000,3,4,3000,4000,x,y,p,4,返回指针的函数,char *f(char *x, char *y) if (strcmp(x,y) 0) return x; else return y; main() char sa =ABC, sb =AT, *p; p = f(sa, sb); printf(%s, p); ,AT,1,返回指针的函数,char *fun(char *s) return s + strlen(s)/2; main() char *p, *st = abcdefgh; p = fun(st); printf(%s, p); ,efgh,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号