第三章第9讲(959KB).pptVIP

  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文档。上传文档
查看更多
3.8 变量的存储类别 变量的存储类别 1、存储方式 静态存储:程序运行期间分配固定存储空间 动态存储:程序运行期间根据需要动态分配 存储空间 2、内存用户区 程序区 静态存储区 动态存储区 全局变量、局部静态变量 形参变量 局部动态变量(auto register) 函数调用时相关临时数据和返回地址 auto---------自动型 register-----寄存器型 static -------静态型 extern-------外部型 动态存储 静态存储 1、自动变量(auto型变量) [auto] 数据类型说明 变量名1[=初值],变量名2 [=初值] ,…,变量名n [=初值] ; 定义格式 说明 存储类型说明符auto可以省略。 自动变量只能在函数内或复合语句中定义,它属于局部变量。 存储空间是在动态存储区中。 自动变量没有赋初值,它的值是不确定的值。 void func ( ) { int i, j, k; …… } 等价于 auto int i, j, k; auto int k; void func ( ) { …… } 错误! 自动变量不可定义在函数外 注意:在函数外部定义的没有带存储类型说明符的全局变量是外部变量,属于静态存储类型。 如:int k; //k为外部变量,属静态存储类型 void func ( ) { …… } 2、外部变量(extern型变量) 外部变量和全局变量是对同一类变量的两种不同角度的提法。全局变量是从它的作用域提出的,外部变量从它的存储方式提出的,表示了它的生存期。它属于静态存储类型。 例: 引用其它文件中的外部变量 int a, b; //外部变量定义 int max ( ); //外部函数声明 void main ( ) { int c; a = 4, b = 5; c = max ( ); printf (max = %d\n, c); } extern int a, b; //外部变量声明 int max ( ) { return (a b ? a : b); } 编译、链接、运行 运行结果: max = 5 定义的一般形式: [extern] 类型说明符 变量名=初值,变量名=初值,…; 注:当需要引用外部变量时,需要声明外部变量。 访问声明格式: extern 类型说明符 变量名; 3、静态变量(static型变量) 静态变量与静态存储类型 静态变量的类型说明符是static。 静态变量属于静态存储类型。 静态存储类型的变量不一定就是静态变量。例如外部变量虽属于静态存储类型但不一定是静态变量,必须由static加以定义后才能成为静态外部变量,或称静态全局变量。 自动变量可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。 静态局部变量 在局部变量的说明前加上static就构成静态局部变量 例如: static int a, b; static float array[5] = {1, 2, 3, 4, 5}; 声明格式: static 类型 变量名; 静态局部变量与自动变量之比较 静态局部变量与自动变量均属于局部变量 静态局部变量生存期长,为整个源程序。自动变量生存期短。 静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同 void func ( ); void main ( ) { int a; a = s + 5; …… } void func ( ) { static int s; …… } 定义静态局部变量s 错误! s的作用域 静态局部变量与自动变量之比较 静态局部变量若在定义时未赋初值,则系统自动赋初值0 静态局部变量赋初值只一次,而自动变量赋初值可能多次 #include stdio.h void main ( ) { int i; void func ( ); //函数说明 for (i = 1; i = 5; i++) func ( ); //函数调用 } void func ( ) //函数定义 { auto int j = 0; ++j;

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档