C语言-函数2推荐课件

上传人:大米 文档编号:588709616 上传时间:2024-09-08 格式:PPT 页数:17 大小:430.50KB
返回 下载 相关 举报
C语言-函数2推荐课件_第1页
第1页 / 共17页
C语言-函数2推荐课件_第2页
第2页 / 共17页
C语言-函数2推荐课件_第3页
第3页 / 共17页
C语言-函数2推荐课件_第4页
第4页 / 共17页
C语言-函数2推荐课件_第5页
第5页 / 共17页
点击查看更多>>
资源描述

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

1、回顾 2-1 q函数是程序中的一个相对独立的单元或模块;q使用函数带来的好处: 程序更清晰、易维护、分模块方便设计与开发、提高代码的重用性;q自定义函数是用户在程序中根据需要而编写的函数。回顾 2-2 q函数的结构包括:返回值类型、函数名、参数列表、函数体q函数原型说明以便向编译器指出该函数使用什么样的格式和语法q函数调用时程序控制流将转向被调函数,被调函数执行结束时,控制流返回主调函数qreturn 语句用于向调用函数返回值目标q理解两种参数传递的方式:传值、引用q熟练使用数组作为函数参数q理解变量的作用域q理解变量的存储类型变量的作用域作用域是某些事物起作用或作用域是某些事物起作用或有效有

2、效的区域。的区域。限于陆地限于海洋限于空中q程序中程序中变量也有不同的使用范围变量也有不同的使用范围,称为变量的作用域。变量的作,称为变量的作用域。变量的作 用域决定变量的用域决定变量的可访问性。可访问性。q变量说明的变量说明的位置不同位置不同,其作用域也不同其作用域也不同。C语言中根据变量的作语言中根据变量的作用域可以将变量分为用域可以将变量分为局部变量局部变量和和全局变量全局变量。变量的作用域voiddisplayDiscount()floatdiscount_amt;.局部变量局部变量:不能在函数外使用:不能在函数外使用floatdiscount_amt;voidmain().voidd

3、isplayDiscount().全局变量全局变量:可以在整个程序中使用:可以在整个程序中使用局部变量局部变量q局部变量也称为局部变量也称为内部变量内部变量。是指在一定范围内有效的变量。是指在一定范围内有效的变量。 C语言中,在以下各位置定义的变量均属于局部变量。语言中,在以下各位置定义的变量均属于局部变量。n在在函数体内定义的变量函数体内定义的变量,在本函数范围内有效,作用域局限,在本函数范围内有效,作用域局限于函数体内。于函数体内。n在在复合语句内定义的变量复合语句内定义的变量,在本复合语句范围内有效,作用,在本复合语句范围内有效,作用域局限于复合语句内。域局限于复合语句内。n有参函数的形

4、式参数有参函数的形式参数也是局部变量,只在其所在的函数范围也是局部变量,只在其所在的函数范围内有效。内有效。intf1(inta)intb,c;intf2(intx)inty,z;main()intm,n; a,b,c作用域:仅限于函数作用域:仅限于函数f1()中中x,y,z作用域:仅限于函数作用域:仅限于函数f2()中中m,n作用域:仅限于函数作用域:仅限于函数main()中中 a,b,c,x,y,z,m,n 都是局部变量都是局部变量局部变量变量的作用域#includevoidaddNumbers()intnum1,num2,sum;printf(n请输入两个数:请输入两个数:);scanf

5、(%d%d,&num1,&num2);sum=num1+num2;printf(子函数中子函数中sum的值是的值是%dn,sum);voidmain()intsum=0;addNumbers();printf(n主函数中主函数中sum的值是的值是%dn,sum);内存内存sumnum2045num1请输入两个数:56 45子函数中sum的值是101主函数中sum的值是 056sum101全局变量全局变量q全局变量(外部变量)全局变量(外部变量): :在在函数外部函数外部定义的变量。定义的变量。q全局变量的全局变量的作用域作用域n从该变量从该变量定义的位置开始到本源文件结束定义的位置开始到本源文

6、件结束, ,变量一直有效。变量一直有效。n在一个函数内变量所做的改变,将在一个函数内变量所做的改变,将影响其他函数中该变量的值影响其他函数中该变量的值n但需要注意的是,但需要注意的是,如果定义了与全局变量同名的局部变量,则如果定义了与全局变量同名的局部变量,则 局部变量优先局部变量优先。q在引用全局变量时如果使用在引用全局变量时如果使用“extern”声明全局变量,可以扩大声明全局变量,可以扩大全局变量的作用域。例如,扩大到整个源文件(模块),对于多全局变量的作用域。例如,扩大到整个源文件(模块),对于多源文件(模块)可以扩大到其它源文件(模块)。源文件(模块)可以扩大到其它源文件(模块)。全

7、局变量的作用域#includeintsum=0;voidaddNumbers()intnum1,num2;printf(n请输入两个数:请输入两个数:);scanf(%d%d,&num1,&num2);sum=num1+num2;printf(子函数中子函数中sum的值是的值是%dn,sum);voidmain()addNumbers();printf(n主函数中主函数中sum的值是的值是%dn,sum);内存内存sumnum2045num1请输入两个数:56 45子函数中sum的值是101主函数中sum的值是10156101全局变量说明q全局变量的定义全局变量的定义必须在所有函数之外必须在所

8、有函数之外, ,且且只能定义一次只能定义一次。q可以利用全局变量可以利用全局变量, ,使函数得到使函数得到一个以上的返回值一个以上的返回值。q与局部变量不同,全局变量贯穿整个程序,并且可被任何一个模与局部变量不同,全局变量贯穿整个程序,并且可被任何一个模 块使用,它们在块使用,它们在整个程序执行期间保持有效整个程序执行期间保持有效。全局变量说明q建议在不必要时不要使用全局变量建议在不必要时不要使用全局变量, ,原因如下:原因如下:全局变量可加强函数模块之间的数据联系,但又使这些函数依赖全局变量可加强函数模块之间的数据联系,但又使这些函数依赖 这些外部变量,因而使得这些函数的独立性降低。这些外部

9、变量,因而使得这些函数的独立性降低。全局变量在整个程序执行期间均占有存储空间全局变量在整个程序执行期间均占有存储空间, ,而不是仅在需要而不是仅在需要 时才开辟单元时才开辟单元. .程序中大量使用全局变量,不可知的和不需要的副作用将可能导程序中大量使用全局变量,不可知的和不需要的副作用将可能导 致程序错误。降低程序的清晰性致程序错误。降低程序的清晰性. . q在在同一源文件同一源文件中,允许全局变量和局部变量中,允许全局变量和局部变量同名同名。在局部变量的在局部变量的 作用域内,全局变量将被屏蔽而不起作用作用域内,全局变量将被屏蔽而不起作用。void main() int a = 0; /初始

10、化a值为0 func(a); /调用函数func printf(%d,a); /输出a的结果/定义函数funcvoid func(int a) a = 10; /让参数a等于10传值调用0传值调用将会输出什么#include void increment(int,int);void main()int num1,num2;printf(n 请输入两个数: );scanf( %d %d,&num1,&num2);printf(n 递增前的值是 %d 和 %dn, num1, num2);increment(num1,num2);printf(n 递增后的值是 %d 和 %dn, num1, nu

11、m2);void increment(int val1,int val2)val1+;val2+;printf(n 子函数中值 %d 和 %dn, val1, val2);传值调用示例请输入两个数: 3456递增前的值是34和56_递增后的值是34和 56num1num2var13456var2子函数中的值是35和 5735345657num1num234563456FF23FF05调用后修改为调用后修改为3535val2FFEAFF45将变量num1的值赋给形参val1将变量num2的值赋给形参val2val1调用后修改为调用后修改为5757调用函数被调用函数数组作为函数参数q在用数组作实参

12、时,在用数组作实参时,以传以传址址方式调用函数方式调用函数,也就是,也就是说把实参数组的首地址赋给形参说把实参数组的首地址赋给形参q实际上形参数组和实参数组为同一数组,共同拥有实际上形参数组和实参数组为同一数组,共同拥有一段内存空间一段内存空间数组作为参数示例1问题描述:通过函数实现5个学员成绩的排序。 #include #define N 5void sort(float);void main() float gradeN; int i; printf(n 输入 %d 个学员的成绩:n,N); for(i=0;iN;i+)scanf(%f,&gradei); sort(grade); printf(n 排序后的成绩为:n); for(i=0;iN;i+) printf(%5.2f ,gradei); printf(n);传递数组时不使用 “&”演示:示例5void sort(float aN) int i,j; float temp; for(i=0;iN;i+) for(j=0;j aj+1) temp = aj+1;aj+1 = aj;aj = temp; 思考:思考:通过函数实现求通过函数实现求5 5个数中的最大值。个数中的最大值。 数组作为参数示例2

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

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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