1、第 9章 变量、函数的属性和编译预处理 9.1 变量的存储类型9.2 变量的作用域9.3 内部函数和外部函数9.4 编译预处理本章重点:本章重点: 1、变量的存储类型; 2、动态变量和静态变量; 3、局部变量和全局变量; 4、宏定义的使用; 5、文件包含的含义。9.1 变量的存储类型 变量的属性: ( 1)操作属性: 变量所持有的 数据 的性质 数据类型。 ( 2)存储属性: 变量所持有的 存储 的性质 存储类型。变量定义的一般形式:存储类型标识符 数据类型标识符 变量表列 ;9.1 变量的存储类型变量的存储类型9.1.1 变量的存储类型含义变量的存储类型:指的是变量的存储方式。包括:1)系统
2、 何时 为变量开辟和撤销存储空间。反映的是变量存储空间存在的时间周期,即 生存期 。2)系统在 何地 为变量开辟存储空间。反映的是变量值的 存放位置 。9.1 变量的存储类型变量的存储类型9.1.2 变量的存储类型分类1、从变量的 生存期 角度来划分,变量分为:1) 静态存储变量 :在整个程序运行期间 占有固定的存储空间 的变量。变量的生存期为 程序执行的整个过程 。整个程序结束后变量的存储空间才被释放。2) 动态存储变量 :在程序运行期间根据需要进行 动态的分配存储空间 的变量。变量的生存期为 程序运行期间的某一段时间 。也就是说,程序运行期间的某一段时间如果需要使用变量则系统为其开辟存储空
3、间,不需要时其存储空间被释放。RAM的用户区1) 程序区 :用于存放用户程序代码。2) 静态存储区 :用于存放存储空间是固定的、使用该变量的程序运行结束后才释放存储空间的用户程序中的变量。 3) 动态存储区 :用于临时存放数据的内存单元,该内存区中的数据可以不断地被另外的变量值覆盖。 9.1 变量的存储类型变量的存储类型2、根据变量值 存放位置 的不同,变量又分为 :1) 内存变量2) 寄存器变量变量值的存储部件: RAM和寄存器( CPU中)。 供用户使用的 RAM存储空间分为三部分:程序区、静态存储区、动态存储区。 变量的存储类型有 4种: auto(自动) static(静态) regi
4、ster(寄存器) extern(外部)变量定义的一般形式:存储类型标识符 数据类型标识符 变量表列 ;说明:存储类型标识符和数据类型标识符位置可以互换,没有先后顺序。9.1 变量的存储类型变量的存储类型变量的存储类型规定了该变量的存储区域,同时也说明了该变量的生存期。1自动变量( auto)自动变量在 程序运行期间 由系统 根据需要 动态的在 内存的动态存储区 中为其开辟和释放存储单元,属于内存动态存储变量。自动变量是在程序运行期间赋初值的,未赋初值时,其值是不确定的,即为随机值。9.1 变量的存储类型变量的存储类型2静态变量( static)在 编译阶段 被系统在 内存的静态存储区 分配了一定的内存单元,程序运行期间,它占据一个永久性的存储单元, 直到整个程序运行结束 才释放其存储单元。静态变量是在程序的编译阶段赋初值的。未赋初值的静态变量, C语言编译程序将其自动赋值为 0(整型变量)、 0.0(实型变量)或者空字符(字符型变量)。9.1 变量的存储类型变量的存储类型3寄存器变量( register)寄存器变量也属于 动态存储变量 , register型变量的值存储在 CPU的通用 寄存器 中。为了提高运算速度,一般把使用较频繁的变量定义成 register型变量。寄存器变量是在运行时赋初值的,未赋初值时,其值是不确定的,即为随机值。9.1 变量的存储类型变量的存储类型