C语言带参数的函数ppt课件.ppt

上传人:小飞机 文档编号:2052361 上传时间:2023-01-04 格式:PPT 页数:23 大小:589KB
返回 下载 相关 举报
C语言带参数的函数ppt课件.ppt_第1页
第1页 / 共23页
C语言带参数的函数ppt课件.ppt_第2页
第2页 / 共23页
C语言带参数的函数ppt课件.ppt_第3页
第3页 / 共23页
C语言带参数的函数ppt课件.ppt_第4页
第4页 / 共23页
C语言带参数的函数ppt课件.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《C语言带参数的函数ppt课件.ppt》由会员分享,可在线阅读,更多相关《C语言带参数的函数ppt课件.ppt(23页珍藏版)》请在三一办公上搜索。

1、1,带参数的函数,第十章,2,回顾 2-1,函数是程序中的一个相对独立的单元或模块使用函数带来的好处:程序更清晰、易维护、分模块方便设计与开发、提高代码的重用性语言提供了极为丰富的内置函数,要使用这些内置函数,需要在程序前包含相应的头文件自定义函数是用户在程序中根据需要而编写的函数,3,回顾 2-2,函数的结构包括:返回值类型、函数名、参数列表、函数体函数原型说明以便向编译器指出该函数使用什么样的格式和语法函数调用时程序控制流将转向被调函数,被调函数执行结束时,控制流返回主调函数return 语句用于向调用函数返回值,4,目标,理解变量的作用域理解变量的存储类型理解两种参数传递的方式:传值、引

2、用熟悉带参函数的调用熟练使用数组作为函数参数,5,变量的作用域 4-1,作用域是某些事物起作用或有效的区域。,限于陆地,限于海洋,限于空中,6,程序中变量也有不同的使用范围,称为变量的作用域。变量的作用域决定变量的可访问性,变量的作用域 4-2,void displayDiscount()float discount_amt;.,局部变量:不能在函数外使用,float discount_amt;void main().void displayDiscount().,全局变量:可以在整个程序中使用,7,变量的作用域 4-3,#include void addNumbers()int num1,n

3、um2,sum;printf(n 请输入两个数:);scanf(%d%d,0,45,请输入两个数:56 45,子函数中sum的值是101,主函数中sum的值是 0,56,101,8,变量的作用域 4-4,#include int sum=0;void addNumbers()int num1,num2;printf(n 请输入两个数:);scanf(%d%d,0,45,请输入两个数:56 45,子函数中sum的值是101,主函数中sum的值是101,56,101,9,局部变量小结,局部变量是在函数内作定义说明的变量,其作用域仅限于函数内,离开该函数后再使用这种变量是非法的。主函数中定义的变量也

4、只能在主函数中使用,不能在其他函数中使用。同时主函数中也不能使用其他函数中定义的局部变量。形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的内存单元,互不干扰。,10,全局变量小结,全局变量是在函数外部定义的变量,它不属于哪一个函数,而是属于一个源程序文件。其作用域是整个源程序。不是所有全局变量都可以直接使用,只有定义在该函数之前的全局变量,才能在该函数中使用。如果同一个程序的多个函数都操纵同一个变量,全局变量会比较有用。外部变量可加强函数模块之间的数据联系,但是又使函数要依赖这些变量,使得函数的独立性降低。从

5、模块化程序设计的观点来看这是不利的,因此在不必要时尽量不要使用全局变量。在同一个源文件中,允许全局变量和局部变量同名。在同名的局部变量的作用域中,全局变量不起作用。,11,存储类型 2-1,变量的存储方式可分为“静态存储”和“动态存储”两种静态存储变量是一直存在的,而动态存储变量则时而存在时而消失这种由于变量存储方式不同而产生的特性称为变量的生存期生存期表示了变量存在的时间,12,静态局部变量,静态局部变量生存期为整个源程序静态局部变量作用域与自动变量相同,即只能在定义该变量的函数内使用该变量对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值函数被调用时,其中的静态局部变量的值将

6、保留前次被调用的结果,13,静态局部变量示例,void format()static int m=0;m+;if(m%10=0)putchar(n);elseputchar();void main()int i;for(i=0;i50;i+)printf(%d,i);format();,0,0,1,1,循环执行50次,49,49,0 1,0 1 2 3 4 5 6 7 8 910 11 12 13 14 15 16 17 18 1920 21 22 23 24 25 26 27 28 2930 31 32 33 34 35 36 37 38 3940 41 42 43 44 45 46 47

7、48 49,2,14,函数形参和实参,void main().display(10,20.5);display(int num,float fraction).,实际参数,函数调用,形式参数,15,void main()int a=0;/初始化a值为0 func(a);/调用函数func printf(%d,a);/输出a的结果/定义函数funcvoid func(int a)a=10;/让参数a等于10,传值调用,0,传值调用,将会输出什么,16,#include void increment(int,int);void main()int num1,num2;printf(n 请输入两个数

8、:);scanf(%d%d,传值调用示例,请输入两个数:,34 56,递增前的值是 34 和 56,_,递增后的值是 34 和 56,34,56,子函数中的值是 35 和 57,35,34,56,57,17,void main()int a=0;/初始化a值为0 func(/让参数a等于10,引用调用,FFE0,引用调用,a=FFE0,将会输出什么,18,#include void increment(int*,int*);void main()int num1,num2;printf(n 请输入两个数:);scanf(%d%d,引用调用示例,请输入两个数:,45 67,递增前的值是 45 和

9、 67,_,递增后的值是 46 和 68,45,67,子函数中的值是 46 和 68,46,FF23,FF05,68,FF23,FF05,19,数组作为函数参数,在用数组作实参时,以传址方式调用函数,也就是说把实参数组的首地址赋给形参实际上形参数组和实参数组为同一数组,共同拥有一段内存空间,20,数组作为参数示例1,问题描述:通过函数实现5个学员成绩的排序。,#include#define N 5void sort(float a);void main()float gradeN;int i;printf(n 输入%d 个学员的成绩:n,N);for(i=0;iN;i+)scanf(%f,传递

10、数组时不使用“&”,void sort(float aN)int i,j;float temp;for(i=0;i aj+1)temp=aj+1;aj+1=aj;aj=temp;,21,问题描述:通过函数实现求5个数中的最大值。,#include int find_larg(int*);void main()int arr15;int i,larg_num;printf(n 请输入 5 个不同的值,存储在一个数组中 n);for(i=0;i=4;i+)scanf(%d,数组作为参数示例2,int find_larg(int*ptr)int high=*ptr,i;ptr+;for(i=1;i=4;i+)if(high*ptr)high=*ptr;ptr+;return high;,22,总结 2-1,根据变量的作用域可以将变量划分为:局部变量和全局变量根据变量的存储类型(决定生存期)将变量划分为:自动变量、寄存器变量、静态变量、外部变量静态局部变量的生存期为整个源程序,但其作用域为定义该变量的函数,23,总结 2-2,采用传值调用方式时,在被调用函数中改变形参的值,只是改变其副本值,而不会影响调用函数中实参值采用引用调用方式时,传递的是变量的地址值,这样在被调函数中,对形参的操作实际上操作的是实参本身数组作为函数传递时,实际采用引用调用方式,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号