第8节 6 5 20-6 5 29 extern全局变量_第1页
第8节 6 5 20-6 5 29 extern全局变量_第2页
第8节 6 5 20-6 5 29 extern全局变量_第3页
第8节 6 5 20-6 5 29 extern全局变量_第4页
第8节 6 5 20-6 5 29 extern全局变量_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

extern全局变量1. 全局变量:extern变量又称全局变量,放在静态存储区,所谓全局,是说该变量可以在程序的任意位置使用,其作用域是整个程序代码范围内,可以被程序其他函数所引用,不仅仅局限在本文件案例:在extern全局变量.c中声明全局变量num,然后在全局变量.c中的print函数中调用extern全局变量.c中的num,extern全局变量.c调用print函数,打印出num的值为10;2. 对于auto自动变量,没有声明,int num 和int num =1d都是定义,在同一个块语句出现就是重定义的错误3. 4.创建一个全局变量并赋值就是定义,没有赋值就是声明。4. 对于extern全局变量来说,有声明和定义之分,声明可以有多个,但是定义只能有一个5. 全局变量的声明与定义在函数外部:Int num 就会被解析为extern int num;Int num = 10就会被解析为 extern int num =10;6. 全局变量定义的基本格式为:extern 类型 变量名 = 初始化表达式 ;此指令通知编译器在静态存储区中开辟一块指定类型大小的内存区域,用于存储该变量例如:创建了一个初始值为100的int型全局变量m:extern int m=100;7. C语言规定,只要是在外部,即不是在任何一个函数内定义的变量,编译器就将其当作全局变量,无论变量定义前是否有extern说明符8. 全局变量仅有声明,没有赋值,调用时会报错9. 对data进行赋值,编译器能找到data的实体,就能正常编译运行,10. 当全局变量定义时,当且仅当省略了extern时,初始化表达式才可省略,系统默认将其初始化为0打印int1,结果是011. 对于定义的全局数组或结构,编译器将其中的每个元素或成员的所有位都初始化为0main函数中输出结果12. 定义与声明的区别:把建立存储空间的变量声明称定义,而把不需要建立存储空间的声明称为声明。13. 小结:14. 全局声明:在main中调用的函数如果定义在main函数之后,要成功运行就必须在main函数之前加上这个函数的声明;15. 在main函数中调用的全局变量如果是在main函数的下方,就必须在main函数调用这个变量之前加上它的声明;16. extern声明的作用:扩大全局变量的范围; 案例: 17. 多个文件引用外部变量: 案例:extern.c中声明全局变量num在main.c中用extern关键字声明num;就能得到另一个文件中的num。18. 跨文件使用全局变量,一定要声明,extern可以省略,一维编译器会自动添加extern;19全局变量的作用域:全局变量的作用域是整个程序,不论该程序由几个文件组成,理论上,可以在程序的任意位置使用定义的全局变量,但在特定位置处,全局变量是否可见取决于是否对其进行了合理声明。不进行任何声明时,全局变量的可见域为从定义到本文件结束。案例:extern int x在块语句内,在块语句外的第12行的x是不可见的,所以编译出错,解决这个问题,只需要将extern int x 放在第6行的块语句之外即可。20. 全局变量作用域,可见域小结:21. 解决练习题:代码:22.全局变量屏蔽:23.函数中的局部变量如果与全局变量同名,局部变量会屏蔽全局变量。24.全局变量利弊:好处:(1)为函数间数据传递提供了新的途径,函数返回值仅仅只能有1个,很多情况下,这不能满足要求,而全局变量可用于更多处理结果。(2)利用全局变量可以减少形参和实参的个数,省去函数调用时的时空开销,提高程序运行的效率弊端:(1)全局变量在程序执行期间都有效,一直占据着存储单元,不像局部变量等在调用执行期间临时占用内存,退出函数时便将其释放。最大的问题是降低了函数的封装性和通用性,由于函数中存在全局变量,因此,如果想把函数复用在其他文件中,必须连所涉及的全局变量一块移植过去,容

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论