- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.4 相关理论知识 在函数f1()内定义了两个局部变量,x为形参,y为一般变量。在 f1()的范围内x,y有效,或者说x,y变量的作用域限于f1()内。 main()函数内定义的局部变量x,y,在main()函数范围内有效。注意,main()函数的内部变量x,y和函数f1()的内部变量x,y虽然同名,却是完全不相关的变量。 它们的作用域不同,不产生冲突。f1()中定义的x,y作用域限于f1()内。main() 函数中定义的x,y的作用域限于main函数内。main()函数的if条件复合语句中还定义了两个局部变量m,n,它们的作用范围仅限于该复合语句内部。 5.4 相关理论知识 2. 全局变量 全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。全局变量定义在所有函数的外部,就是图5-4所示的类型定义说明部分。其作用范围是从该变量定义开始到程序结束。 在同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,全局变量不起作用。 5.4 相关理论知识 例如: int a,b; /*定义全局变量a,b */ int f1(int x) /*定义局部变量x */ { … } int f2(int a) /*定义局部变量a */ { … } main() { … } 5.4 相关理论知识 在所有函数外部定义了全局变量a,b,它们的作用范围应该是其后的所有函数,包括f1(),f2(),main()。但是由于在f2()中定义了局部变量a,因此在f2()中全局变量a不起作用。 如例5-3中,由于C语言规定函数返回值只有一个,但是题目要求函数计算体积及三个面的面积,需要返回4个数据。 当需要增加函数的返回数据时,用外部变量是一种很好的方式。 例5-3中,如不使用全局变量,在主函数中就不可能取得v,s1,s2,s3四个值。而采用了全局变量,在函数count()中求得的s1,s2,s3的值在main()函数中仍然有效。因此全局变量是实现函数之间数据通讯的有效手段。 5.4 相关理论知识 5.5.5 指针和数组作为函数参数 1. 指针作为函数参数 例5-4:如果不用指针,直接传递参数,代码如下 #include stdio.h void swap(int a,int b); /*函数声明*/ void main() { int x,y; x=10; y=20; printf(Before swapping:x=%d y=%d\n,x,y); swap(x,y); /*调用函数*/ printf(After swapping:x=%d y=%d\n,x,y); } void swap(int a,int b) /*定义函数*/ { int t; t=a; a=b; b=t; } 5.4 相关理论知识 运行结果如下: Before swapping:x=10 y=20 After swapping:x=10 y=20 为什么调用swap函数没有实现变量x,y的交换呢?通过图5-5所示的函数调用的执行过程,我们可以了解不能实现交换的原因。 5.4 相关理论知识 10 20 10 20 10 20 10 20 10 20 20 10 x y x y x y x y main函数 swap函数 a b a b a b a b 图5-5 参数传递过程 (a)调用前 (b)调用时 (c)执行swap函数 (d)调用结束返回 5.4 相关理论知识 通过图5-3可以发现,C语言中的实参给形参传值是一种单向的“值传递”。当实参为变量时,函数调用时仅仅是将实参变量的值复制了一份交给形参,形参与对应实参的存储空间完全不同,在函数调用过程中对形参的改变,根本不会影响到实参的值。 那么为什么例5-4中采用指针作为参数就能够实现互换呢?当swap函数中使用两个类型为整型的指针变量a和b作为形参,main函数中调用swap时,将两个整型变量x和y的地址 x和 y作为实参传递给形参a和b,调用过程中参数传递情况如图5-6所示。 5.4 相关理论知识 10 20 10 20 20 10 20 10 x y x y x y x y x y x y main函数 swap函数 a b a b a b a b 图5-6 指针变量作为参数的传递过程 (a)调用前 (b)调用时 (c)执
您可能关注的文档
- 数控加工编程与操作第五章 数控铣削机床操作.doc
- 数字电子技术 第三版 数字电子技术部分习题答案.doc
- 推销与商务谈判 第二版 李冬芹 电子教案项目二 认知销售岗位.doc
- AutoCAD2008基础教程 本科 第三章.ppt
- 推销与商务谈判 第二版 李冬芹 模拟试卷模拟试卷A 附答案.doc
- 推销与商务谈判 第二版 李冬芹 模拟试卷模拟试卷B 附答案.doc
- 推销与商务谈判 第二版 李冬芹 模拟试卷模拟试卷E 附答案.doc
- AutoCAD2008基础教程 本科 第十二章.ppt
- 推销与商务谈判 第二版 李冬芹 模拟试卷模拟试卷F 附答案.doc
- 推销与商务谈判 电子教案项目八 商务谈判准备.doc
- 2025年演出经纪人演出数据跨境流动法律问题专题试卷及解析.pdf
- 2025年信息系统安全专家物联网安全日志分析专题试卷及解析.pdf
- 2025年信息系统安全专家云环境持续安全监控专题试卷及解析.pdf
- 2025年信息系统安全专家ISMS内部审核流程与技巧专题试卷及解析.pdf
- 2025年演出经纪人艺人定位与数据化运营策略专题试卷及解析.pdf
- 2025年演出经纪人商务谈判中的僵局处理与冲突化解专题试卷及解析.pdf
- 2025年演出经纪人国际演出合同纠纷解决机制专题试卷及解析.pdf
- 2025年注册项目管理师蒙特卡洛模拟在敏捷项目迭代周期估算中的应用专题试卷及解析.pdf
- 2025年AWS认证子网与AWSSimSpaceWeaver仿真网络专题试卷及解析.pdf
- 2025年AWS认证SQS与EMR集群任务调度专题试卷及解析.pdf
最近下载
- VMMORE微秒控制ISD300-GSD300-MSD300系220V伺服驱动器用户手册V2.3.pdf
- 颈动脉灌注机制济南脑科医院课件.pptx VIP
- 暖通空调的设计手册.pdf VIP
- 《教育心理学》课件——第七章 学习策略.pptx VIP
- 2025年毒品预防教育试题及答案.docx VIP
- 暖通空调毕业设计.doc VIP
- 西方音乐史(上)(中央音乐学院) 中国大学MOOC 慕课 章节测验答案.pdf VIP
- 颈动脉灌注机制.pptx VIP
- 2025年毒品预防教育知识竞赛试题及答案.docx VIP
- CHINSC深川S160A变频器参数设置调试故障代码资料V1.2-2023.pdf
原创力文档


文档评论(0)