




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十章,带参数的函数,函数是程序中的一个相对独立的单元或模块使用函数带来的好处:程序更清晰、易维护、分模块方便设计与开发、提高代码的重用性语言提供了极为丰富的内置函数,要使用这些内置函数,需要在程序前包含相应的头文件自定义函数是用户在程序中根据需要而编写的函数,2,回顾2-1,函数的结构包括:返回值类型、函数名、参数列表、函数体函数原型说明以便向编译器指出该函数使用什么样的格式和语法函数调用时程序控制流将转向被调函数,被调函数执行结束时,控制流返回主调函数return语句用于向调用函数返回值,3,回顾2-2,理解变量的作用域理解变量的存储类型理解两种参数传递的方式:传值、引用熟悉带参函数的调用熟练使用数组作为函数参数,4,目标,5,变量的作用域4-1,作用域是某些事物起作用或有效的区域。,限于陆地,限于海洋,限于空中,变量的作用域4-2,6,程序中变量也有不同的使用范围,称为变量的作用域。变量的作用域决定变量的可访问性,voiddisplayDiscount()floatdiscount_amt;.,局部变量:不能在函数外使用,floatdiscount_amt;voidmain().voiddisplayDiscount().,全局变量:可以在整个程序中使用,7,变量的作用域4-3,#includevoidaddNumbers()intnum1,num2,sum;printf(n请输入两个数:);scanf(%d%d,0,45,请输入两个数:5645,子函数中sum的值是101,主函数中sum的值是0,56,101,8,变量的作用域4-4,#includeintsum=0;voidaddNumbers()intnum1,num2;printf(n请输入两个数:);scanf(%d%d,0,45,请输入两个数:5645,子函数中sum的值是101,主函数中sum的值是101,56,101,9,存储类型2-1,变量的存储方式可分为“静态存储”和“动态存储”两种静态存储变量是一直存在的,而动态存储变量则时而存在时而消失这种由于变量存储方式不同而产生的特性称为变量的生存期生存期表示了变量存在的时间,存储类型2-2,10,11,静态局部变量,静态局部变量生存期为整个源程序静态局部变量作用域与自动变量相同,即只能在定义该变量的函数内使用该变量对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值函数被调用时,其中的静态局部变量的值将保留前次被调用的结果,12,静态局部变量示例,voidformat()staticintm=0;m+;if(m%10=0)putchar(n);elseputchar();voidmain()inti;for(i=0;i50;i+)printf(%d,i);format();,0,0,1,1,循环执行50次,49,49,01,012345678910111213141516171819202122232425262728293031323334353637383940414243444546474849,2,静态全局变量与普通全局变量在存储方式上完全相同区别在于:非静态全局变量的作用域是整个源程序;而静态全局变量的作用域只是定义它的文件,13,静态全局变量,14,函数形参和实参,voidmain().display(10,20.5);display(intnum,floatfraction).,实际参数,函数调用,形式参数,15,传值调用,voidmain()inta=0;/初始化a值为0func(a);/调用函数funcprintf(%d,a);/输出a的结果/定义函数funcvoidfunc(inta)a=10;/让参数a等于10,0,传值调用,将会输出什么,16,传值调用示例,#includevoidincrement(int,int);voidmain()intnum1,num2;printf(n请输入两个数:);scanf(%d%d,请输入两个数:,3456,递增前的值是34和56,_,递增后的值是34和56,34,56,子函数中的值是35和57,35,34,56,57,17,引用调用,voidmain()inta=0;/初始化a值为0func(/让参数a等于10,FFE0,引用调用,a=FFE0,将会输出什么,18,引用调用示例,#includevoidincrement(int*,int*);voidmain()intnum1,num2;printf(n请输入两个数:);scanf(%d%d,请输入两个数:,4567,递增前的值是45和67,_,递增后的值是46和68,45,67,子函数中的值是46和68,46,FF23,FF05,68,FF23,FF05,19,数组作为函数参数,在用数组作实参时,以传址方式调用函数,也就是说把实参数组的首地址赋给形参实际上形参数组和实参数组为同一数组,共同拥有一段内存空间,20,数组作为参数示例1,问题描述:通过函数实现5个学员成绩的排序。,#include#defineN5voidsort(float);voidmain()floatgradeN;inti;printf(n输入%d个学员的成绩:n,N);for(i=0;iN;i+)scanf(%f,传递数组时不使用“floattemp;for(i=0;iaj+1)temp=aj+1;aj+1=aj;aj=temp;,21,数组作为参数示例2,问题描述:通过函数实现求5个数中的最大值。,#includeintfind_larg(int*);voidmain()intarr15;inti,larg_num;printf(n请输入5个不同的值,存储在一个数组中n);for(i=0;i=4;i+)scanf(%d,演示:示例6,intfind_larg(int*ptr)inthigh=*ptr,i;ptr+;for(i=1;i=4;i+)if(high*ptr)high=*ptr;ptr+;returnhigh;,根据变量的作用域可以将变量划分为:局部变量和全局变量根据变量的存储类型(决定生存期)将变量划分为:自动变量、寄存器变量、静态变量、外部变量静态局部变量的生存期为整个源程序,但其作用域为定义该变量的函数静态全局变量的生存期为整个源程序,其作用域为定义该变
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电气设备安装与外包维护服务合同模板
- 2025年按季度结算的酒店租赁与客房管理合同
- 2025版个人对食品公司借款合同
- 2025版遗产分配与税务筹划专业服务合同
- 二零二五年店铺装修设计、施工、监理一体化合同
- 2025版金融咨询居间服务协议书
- 二零二五年度轨道交通工程劳务外包施工合同范本
- 居间合同2025年度升级版:定义、属性与执行细则
- 二零二五年度房产收购法律援助合同范本
- 二零二五年度智能制造行业劳务零工合同模板
- 【艾青诗选】批注
- 悬臂式隧道掘进机施工工艺
- 水利工程基础知识汇总入门必看
- 塑宝立式管道加压泵型号及安装
- DL-T 748.8-2021 火力发电厂锅炉机组检修导则 第8部分:空气预热器检修
- GB/T 9074.1-2018螺栓或螺钉和平垫圈组合件
- GB/T 7631.5-1989润滑剂和有关产品(L类)的分类第5部分:M组(金属加工)
- GB/T 24128-2018塑料塑料防霉剂的防霉效果评估
- 测量误差及数据处理课件
- 测量工具使用规范培训教材课件
- 脑电图(图谱)课件
评论
0/150
提交评论