5章函数.pptVIP

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

5.4.1 标识符的作用域 2.全局变量 在函数外部定义的变量称为全局变量。 全局变量的作用域是从变量定义的地方开始直至整个源程序文件的结束为止。 【例5-14】 全局变量的使用示例。 #include stdio.h int M=5; /*定义全局变量M*/ int fun(int x, int y) { int M=10 ; /*定义局部变量M*/ return (x*y-M) ; } int main(void) { int a=7, b=5; printf( %d\n, fun(a,b)/M); return 0;} 局部变量M的作用域 全部变量M的作用域 5.4 标识符的作用域和生存期 5.4.2 存储类别 存储类别是变量的另一个属性。它涉及变量存在的时间长短,作用域的大小以及在硬件中存放它们的地点、区域等。 从变量值存在的时间(即生存期)来看,变量的存储有两种方式:静态存储方式和动态存储方式。 静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式。 动态存储方式是指在程序运行期间根据需要进行动态地分配存储空间的方式。 C语言的存储类别有两种:自动类和静态类。 自动类是局部变量默认的存储类别。 全局变量只能是静态类。 5.4.2 存储类别 供用户使用的存储空间分为3个不同的部分: 程序区:存放程序的可执行代码模块。 静态存储区:存放所有的全局变量以及标明为静态类别的局部变量。 动态存储区(运行栈区):存放所有未标明为静态类的局部变量、函数的形式参数、现场保护 。 存储类别说明符: auto(自动) register(寄存器) static(静态) extern(外部) 1.自动变量 自动变量用存储类别说明符auto表示。 如果没有指定存储类别,默认为是自动变量 。 5.4.2 存储类别 【例5-15】 自动变量的使用示例。 #include stdio.h void f (int n) { auto int s=0; /*auto可省略写成int s=0;*/ s=s+1; printf(No.%d:s=%d\n,n,s);} int main(void) { int num; for(num=1;num4;num++) f(num); return 0;} No.1:s=1 No.2:s=1 No.3:s=1 自动变量分配在动态存储区。采用动态存储分配方法,即在函数调用时才分配存储单元,函数结束时存储单元又被回收释放。因此,自动类别局部变量的生存期是:当程序的运行进入到这个变量所在的函数体(或复合语句)时分配存储单元,退出函数体(或复合语句)释放存储单元。 5.4.2 存储类别 2.寄存器变量 寄存器变量用存储类别说明符register表示。 寄存器变量也是自动类变量,它与自动变量不同的是寄存器变量的值保存在计算机CPU寄存器中。 3.静态类的局部变量 当在函数体或复合语句内用存储类别说明符static说明一个变量时,该变量为静态局部变量。 静态局部变量存放在静态存储区。一旦为其分配了存储单元,则在整个程序执行期间,将固定地占有分配的存储单元。程序执行结束时才释放。这一点和全局变量是一样的。 但静态局部变量的作用域与自动变量一样,只有在定义它的函数或复合语句内可以访问它。 5.4.2 存储类别 【例5-17】 静态局部变量的使用示例。 #include stdio.h void f (int n) { static int s=0; /* s为静态局部变量*/ s=s+1; printf(No.%d:s=%d\n,n,s); } int main(void) { int num; for(num=1;num4;num++) f (num); return 0; } No.1:s=1 No.2:s=2 No.3:s=3 5.4.2 存储类别 4.extern说明符 extern说明符置于变量前,用来说明变量的定义在别的文件或位置,提示编译程序遇到此变量时在其他模块中寻找其定义。 当全局变量的定义在后,而使用在前时,要在使用它的函数中用extern说明符对该全局变量进行说明,以便通知编译程序。这时其作用域从extern说明处起直至该函数的结尾。 【例5-18】 extern的使用示例:在同一文件中使用extern声明全局变量。 5.4.2 存储类别 #inclu

文档评论(0)

118books + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档