网站大量收购独家精品文档,联系QQ:2885784924

c语言程序设计 重庆大学课件 第08章 结构体类型和联合体类型课件.ppt

c语言程序设计 重庆大学课件 第08章 结构体类型和联合体类型课件.ppt

  1. 1、本文档共88页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言程序设计 重庆大学课件 第08章 结构体类型和联合体类型课件

同名全局变量与局部变量作用域重叠问题 4.21 程序演示 0 x=20 x=10 x=0 用户使用内存存储空间的情况 程序区 静态存储区 动态存储区 用户区 所有的全局(外部)变量及静态局部变量都存放在静态存储区, 程序执行完毕才释放。 函数的形参 局部(自动)变量 4.3.2 变量的生存期 程序运行中,不同存储类别的变量,占用的存储区域不同,分配的存储时间(生存期)也不同。 按变量的生存期分类 局部变量(自动变量)的生存期:这类变量存储于内存的动态存储区,它在程序运行中使用到该变量的时间段存在。即程序进入该函数或复合语句时才分配存储空间,当该函数或复合语句执行完后存储空间被撤销。 全局变量或静态变量(全局或局部)的生存期:这类变量存储于内存的静态存储区,它在编译时分配存储空间,在程序运行的整个期间都存在。 4.3.2 变量的生存期 在C程序设计中,为了合理选择变量的存储类别,有必要对不同存储类别的变量在程序中的作用分两方面进行讨论。 全局变量的存储类别 对于全局变量而言,能够起作用的存储类别为extern 和 static。 局部变量的存储类别 对局部变量能够起作用的存储类别为auto 和 static。 1)全局变量的存储类别 extern 扩展作用域 static 限制作用域 限制强于扩展,即若两种存储说明对某全局变量同时出现,以限制说明为准。 int x; static int y; extern int x; extern int x; extern int y; y x x y是静态全局变量不能扩展作用域 X原作用范围 File1.cpp源文件扩展x File2.cpp源文件扩展x 使用extern声明,可扩充全局变量在一个源程序的作用域 例4.22 程序演示 1)全局变量的存储类别 X原作用域 X被扩充后的作用域 100 110 130 自动变量的生存期与其所在函数被调用运行的时间相同,并且自动变量的值在函数的多次调用中都不会保留。 为满足在函数的多次调用中,局部变量仍能在保持原来值基础上继续使用,C语言提供了静态存储类别(static)。 静态局部变量的定义形式: static 数据类型符 变量表; 2)局部变量的存储类别 静态局部变量具有如下特点: ①静态局部变量的存储空间在程序的整个运行期间是固定的。系统在编译时就为它分配存储空间,它的生存期是整个程序的运行期间。 ②静态局部变量的初始化是在程序编译时进行的。如果在定义时没有对它进行初始化,那么系统将它自动初始化为0(整型)、或’\0’(字符型)。 ③静态局部变量的值在函数多次调用中具有可继承性。 ④静态局部变量的值只能在定义它的局部范围内使用。在它的作用域范围之外,该静态局部变量虽然存在,但不能对它进行访问。 2)局部变量的存储类别 例4.23 静态局部变量与自动变量的比较 1 /* Name: ex04-23.cpp */ 2 #include stdio.h 3 void main() 4 { void f1(); 5 f1(); 6 f1(); 7 } 8 void f1() 9 { int a=10; 10 static int b=10; 11 a+=100; 12 b+=100; 13 printf(a=%d,b=%d\n,a,b); 14 } 例4.23 程序演示 2)局部变量的存储类别 110 110 a=110,b=110 110 210 a=110,b=210 b++; 函数与程序结构 函数的定义和调用 函数的嵌套调用和递归调用 变量的作用域和生存期 编译预处理 多源文件C程序的组织方法 编译预处理概念 编译预处理是C编译系统在对C源程序进行编译之前对它进行的一些预加工,然后再将处理的结果和源程序一起进行编译,以得到目标代码。恰当地使用C语言的编译预处理功能可以有效地提高程序开发效率。 编译预处理语句以#号开头、占用一个单独的书写行、语句的结尾不需要用“;”作为结束符。 编译预处理语句可以出现在C源程序的任何位置,其作用范围是从出现点开始到源程序末尾。 编译预处理语句常有三种形式 宏定义 文件包含 条件编译 4.4 编译预处理 宏定义分为代参数的宏定义和不代参数的宏定义 不代参数的宏定义 定义形式:#define 宏标识符 字符串 调用形式: 宏标识符(直接用在表达式中) 宏定义的作

您可能关注的文档

文档评论(0)

allap + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档