- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.8 变量的定义位置和作用范围 7.8.1 局部变量 在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。称为“局部变量”。如: 说明: (1)主函数main中定义的变量(m,n)也只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效。主函数也不能使用其他函数中定义的变量。 (2)不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。例如,在f1函数中定义了变量b,c,尚若在f2中也定义变量b和c,它们在内存中占不同的单元,互不混淆。 (3)形式参数也是局部变量。其他函数不能调用。 (4)在一个函数内部,可以在复合语句中定义变量,这些变量只在复合语句中有效,这些复合语句也可称为“分程序”或“程序块”。 7.8.2 全局变量 全局变量又称为外部变量,是在函数外部定义的变量。其有效范围是从变量定义的位置开始到本源文件结束止。 若在同一个源文件中,局部变量与全局变量同名,则在局部变量作用范围内,全局变量被屏蔽,不起作用。 在函数体外进行的函数说明也使该函数具有全局的性质。 说明: (1)全局变量的作用:增加函数间数据联系的渠道。 对于全局变量,如果在定义时不进行初始化,则系统将自动赋予其初值,对数值型赋0,对于字符型赋空‘\0’。 (2)使用全局变量会增加程序的内存开销,因为全局变量在程序的整个执行过程中都有效,即一直占用着内存单元,而不是象局部变量那样,在进入其所在函数时才开辟存储单元,退出函数时便将其释放。使用全局变量,还会降低函数的通用性,而且会降低程序的清晰度。建议不要无限制的使用全局变量。 (3)在定义全局变量时,最理想的定义位置是在源文件的开头处,这样,在整个文件中的所有函数均可使用该变量。如果将一全局变量定义在源程序文件的中间,则其前面的函数不能使用该变量。如果在定义点之前的函数想引用该外部变量,则应该在访函数中用关键字extern作“外部变量说明”。表示该变量在函数的外部定义,在函数的内部可以使用它们。 外部变量的定义与外部变量的说明并不是一回事。外部变量的定义只能有一次,它的位置在所有函数之外,而同一文件中的外部变量的说明可以有多次,它的位置在函数之内。 (4)如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。 例7.9 编写一函数,求出一浮点数组中各元素的平均值、最大值和最小值。 例7.10 求两个数的最大值。 int max(x,y); int x,y; {int z; z=xy? x:y; return(z); } main() {extern int a,b; printf(“max=%d\n”,max(a,b)); } int a=10,b=120; 例7.11 求两个数的最大值。 int a=3,b=5; max(a,b) int a,b; {int c; c=ab? a:b; return(c); } main() {int a=10; printf(“max=%d\n”,max(a,b)); } 7.9 动态存储变量和静态存储变量 7.9.1 变量的存储类别 1. 静态存储方式 是指的程序运行期间分配固定的存储空间方式。 2. 动态存储方式 是指在程序运行期间根据需要进行动态的分配存储空间方式。 供用户作用的存储空间可分为三部分: (1)程序区; (2)静态存储区; (3)动态存储区; 全局变量存放在静态存储区中,局部变量存放在动态存储区中。 在动态存储区中存放以下数据: (1)函数形参变量。 (2)局部变量。 (3)函数调用时的现场保护和返回地址。 * * 第十二讲 函数与变量 7.8 变量的定义位置和作用范围 7.9 动态存储变量与静态存储变量 C语言中变量的定义有三种基本位置:函数内部、函数参数中及所函数内部。 Float f1(int a) /*函数f1*/ {int b,c; ┆ a、b、c有效 } Char f2(int x,int y); /*函数f2*/ {int I,j; x、y、i、j有效 } Main() /*主函数*/ {int m,n; ┆ m、n有效 } main() {int a,b; ┆ {int c; c=a+b; ┆ } ┆ } c在此范围内有效 a、b在此范围内有效 例如: Int a=1,b=5; Float f1(x); Int x; {int c,d; ┆ } Char c1,c2; Char f2(x,y) Int x,y; {int I,j; ┆
您可能关注的文档
- C++程序设计教程 杨国兴及例题 第5章 数组与指针新.ppt
- C++程序设计教程 杨国兴及例题 第6章 类与对象新.ppt
- C++程序设计教程 杨国兴及例题 第7章 继承与派生新.ppt
- C++程序设计教程 杨国兴及例题 第9章 模板新.ppt
- C++程序设计教程 杨国兴及例题 第10章 输入输出流新.ppt
- C++程序设计教程与实验指导 杨国兴 第2章 C++基础新.ppt
- C++程序设计教程与实验指导 杨国兴 第3章 函数新.ppt
- C++程序设计教程与实验指导 杨国兴 第4章 类与对象新.ppt
- C++程序设计教程与实验指导 杨国兴 第5章 继承与派生新.ppt
- C++程序设计教程与实验指导 杨国兴 第6章 多态性新.ppt
- 中国国家标准 GB/T 45390-2025动力锂电池生产设备通信接口要求.pdf
- 中国国家标准 GB/T 45393.2-2025信息技术 建筑信息模型(BIM)软件 第2部分:参数化模型.pdf
- GB/T 45393.2-2025信息技术 建筑信息模型(BIM)软件 第2部分:参数化模型.pdf
- 《GB/T 45393.2-2025信息技术 建筑信息模型(BIM)软件 第2部分:参数化模型》.pdf
- GB/T 10184-2025电站锅炉性能试验规程.pdf
- 海尔智家股份有限公司海外监管公告 - 海尔智家股份有限公司2024年度环境、社会及管治报告.pdf
- 上海复旦张江生物医药股份有限公司2024 环境、社会及管治报告.pdf
- 中国邮政储蓄银行股份有限公司中国邮政储蓄银行2024年可持续发展报告.pdf
- 豫园股份:2024年环境、社会及管治(ESG)报告.pdf
- 南京熊猫电子股份有限公司海外监管公告 - 2024年度环境、社会及治理(ESG)报告.pdf
文档评论(0)