C语言第8章 用户标识符的作用域和存储类别.pptVIP

  • 5
  • 0
  • 约4.91千字
  • 约 54页
  • 2020-02-07 发布于辽宁
  • 举报

C语言第8章 用户标识符的作用域和存储类别.ppt

8.3全局变量的作用域和生存期 int sum; void fun( ); main( ) { sum=10; printf(**main(1)**:%d\n,sum); fun( ); printf(**main(2)**:%d\n,sum); } void fun( ) { sum=20; printf(** fun **:%d\n,sum); } 程序运行结果如下: **main(1)**:10 ** fun **:20 **main(2) **:10 8.3全局变量的作用域和生存期 程序说明: 在main函数中两次输出的sum值应是在该函数中定义的内部变量sum,所以均输出10。而在fun函数中输出的sum应是全局变量sum。 8.3全局变量的作用域和生存期 8.3.2 在同一编译单位内使用extern说明符 若全局变量的定义在后,引用它在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序:该变量是一个已在外部定义了的全局变量,已经分配了存储单元,不需要再为它另外开辟存储单元。 8.3全局变量的作用域和生存期 说明的格式为: extern 数据类型 全局变量名; 8.3全局变量的作用域和生存期 【例8.7】阅读下面程序,分析输出结果。 8.3全局变量的作用域和生存期 #include stdio.h extern int n; void fun( ) { n-=20; } int n=100; main( ) { for(; n=60;) { fun( ); printf(n=%d\n,n); } } 全局变量的声明 全局变量的定义 程序的运行结果如下: n=80 n=60 n=40 8.3全局变量的作用域和生存期 程序说明: 全局变量的定义与说明不是一回事:定义只能有一次,定义的同时为变量分配内存单元,而全局变量说明是为了要引用该变量而作的一个声明,不分配内存单元。全局变量说明可进行多次。 8.3全局变量的作用域和生存期 8.3.3 在不同编译单位内使用extern说明符程序说明: 当在一个源文件中定义的全局变量,在其他源文件中要使用时,应该在该文件中对该变量进行声明,声明的格式是: extern 数据类型 全局变量名; 8.3全局变量的作用域和生存期 【例8.8】不同源文件中外部全局变量的引用样例。 8.3全局变量的作用域和生存期 file1.c源程序为: int i, j; mian( ) { ┇ } fun( ) { ┇ } 定义了外部变量i和j 普通高等教育“十一五”国家级规划教材 普通高等教育“十一五”国家级规划教材 普通高等教育“十一五”国家级规划教材 8.1 局部变量和全局变量 8.2 局部变量的作用域和生存期 8.3 全局变量的作用域和生存期 8.4 函数的存储类别 本章主要内容 问题的提出 一个C语言程序在运行时所用的存储空间,通常包括以下三部分: 程序区 静态存储区 动态存储区 8.1 局部变量和全局变量 变量的作用域(scope) 程序中定义变量的位置及其能被读写访问的范围。 局部变量 Local Variable 全局变量Global Variable 8.1 局部变量和全局变量 8.1.1 局部变量 局部变量 (内部变量) :在函数(或复合语句)内部定义的变量。 局部变量的作用域仅限于该函数(或复合语句)内部。离开该函数(或复合语句),其值就不能再引用。 8.1 局部变量和全局变量 【例8.1】内部变量应用样例。 8.1 局部变量和全局变量 int f( int a) { a=a+4; rerun a; } main( ) { int a; a=3; printf(“%d\n”,f(a)); printf(“%d”,a); } 形参a的作用范围 局部变量a的作用范围 8.1 局部变量和全局变量 程序说明 main函数及f函数中都定义了变量a。虽然变量名相同,但却占用不同的内存空间,起作用的范围也不同,即各自在所定义的函数中有效。 形参也是局部变量。 局部变量的作用域是包围着该变量定义的大括号{ } 之内,超出这个范围 , 局部变量就不能使用了。 8.1 局部变量和全局变量 8.1.2 全局变量 全局变量 (外部变量 ):在所有函数外部定义的

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档