C语言程序设计 高职计算机大类专业 徐永青任务5 模块化程序设计.pptVIP

C语言程序设计 高职计算机大类专业 徐永青任务5 模块化程序设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)执

您可能关注的文档

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档