本次课内容:变量的存储属性 教学目的:掌握动态、表态和外部变量的存储类型定义方法; 掌握各类型的初始化及特性。 重点:变量存储类型定义方法及特性 难点:不同类型的应用环境及定义方法。 预习 maint ( int i-1,j=l; printf(“j dj=%dⅦn”,j) int i, =2, k; printf(i=%d,k=%dn”k); printi(“i=%dj=%dn”,i)
本次课内容:变量的存储属性 教学目的:掌握动态、表态和外部变量的存储类型定义方法; 掌握各类型的初始化及特性。 重点:变量存储类型定义方法及特性。 难点:不同类型的应用环境及定义方法。 预习: main() { int i=1,j=1; printf(“i=%d,j=%d\n”,i,j); { int i,=2,k; printf(“i=%d,k=%d\n”,i,k); } printf(“i=%d,j=%d\n”,i,j); }
变量的存储属性 变量的存储器类型 外存储器(辅存) 计算机存储器{内存储器(主存)auto, tatic,extern 寄存器(CPU中的小临时存储器) register 寄存器的存取速度比主存快,用于存储一些反复被加工的数据。 2、变量的生存期 (1)在编译时分配存储单元,程序执行开始后创建,程序结束后 被撤消。变量的生存期为程序执行的整个过程。 (2)只在程序执行的某一段时间内存在。如函数的形参和在函数 体或分程序中定义的变量。 (3)变量的可用域:全局可用与局部可用。 变量的存储属性分四类:寄存器( register)、自动(auto)、静态 ( static)、外部( extern)
变量的存储属性 1、变量的存储器类型 计算机存储器 寄存器的存取速度比主存快,用于存储一些反复被加工的数据。 2、变量的生存期 (1)在编译时分配存储单元,程序执行开始后创建,程序结束后 被撤消。变量的生存期为程序执行的整个过程。 (2)只在程序执行的某一段时间内存在。如函数的形参和在函数 体或分程序中定义的变量。 (3)变量的可用域:全局可用与局部可用。 变量的存储属性分四类:寄存器(register)、自动(auto)、静态 (static)、外部(extern)。 外存储器(辅存) 内存储器(主存)auto,static,extern 寄存器(CPU中的小临时存储器)register
动态变量 动态变量:某一时刻动态建立,另一时刻动态撤销的一种变 量。 动态变量包括:自动变量(Auto)、寄存器变量( Register)。 1、自动变量(auto) 自动变量定义格式: auto]数据类型变量名|=初始值表达式], 前面所使用的变量都是自动变量(默认存储类型) 说明: (1)自动变量是局部变量; P1164.11 (2)在对自动变量赋值前,变量值不确定; (3)对同一函数的两次调用之间,自动变量值不保留。 P1184.13 2、寄存器变量( register) 与自动变量有相同性质,系统将其存放于CPU中的寄存器中。 寄存器变量只能用于函数内,且只能是整型 P1184.14
一、动态变量 动态变量:某一时刻动态建立,另一时刻动态撤销的一种变 量。 动态变量包括:自动变量(Auto)、寄存器变量(Register)。 1、自动变量(auto) 自动变量定义格式: [ auto] 数据类型 变量名 [=初始值表达式],…; 前面所使用的变量都是自动变量(默认存储类型) 说明: (1)自动变量是局部变量; P116_4.11 (2)在对自动变量赋值前,变量值不确定; (3)对同一函数的两次调用之间,自动变量值不保留。 P118_4.13 2、寄存器变量(register) 与自动变量有相同性质,系统将其存放于CPU中的寄存器中。 寄存器变量只能用于函数内,且只能是整型。 P118_4.14
静态变量( static “静态”相对于动态而言。 (1)静态变量的存储空间在程序的整个运行其间是固定的,即 从程序开始到结束都是存在的。 (2)静态变量初始化是在编译时进行的。 若定义时未初始化,编译时将其初始化为0或0.0 定义格式: static数据类型变量名=初始表达式],…; 3)函数多次被调用时,静态变量的值具有可继承性。 P1204.15 (4)静态局部变量的值只能在本函数(或分程序中)使用 三、外部变量 1、外部变量是全局变量 定义在所有函数之外。 若定义时未初始化,编译时将其初始化为0或0.0。 有效范围从定义位置开始到程序尾 P121P122
二、静态变量(static) “静态”相对于动态而言。 (1)静态变量的存储空间在程序的整个运行其间是固定的,即 从程序开始到结束都是存在的。 (2)静态变量初始化是在编译时进行的。 若定义时未初始化,编译时将其初始化为0或0.0。 定义格式: static 数据类型 变量名[=初始表达式],…; (3)函数多次被调用时,静态变量的值具有可继承性。 P120_4.15 (4)静态局部变量的值只能在本函数(或分程序中)使用。 三、外部变量 1、外部变量是全局变量 定义在所有函数之外。 若定义时未初始化,编译时将其初始化为0或0.0。 有效范围从定义位置开始到程序尾。 P121_ P122_
2、外部变量使用的几种情况 (1)限定本文件的外部变量只在本文件中使用。 在外部变量定义前加一个 static,即静态外部变量,使其 具有局部化。 (2)将外部变量的作用域在本文件范围扩充。 对于位于定义点之前的函数,用 extern说明,其扩充到该 函数中。 P1244.18 (3)将外部变量作用到其它文件 在需要这些变量的文件中对变量用 extern进行声明。 P125 3、外部变量的副作用 模块间联系太多,外部依赖太多,降低独立性
2、外部变量使用的几种情况 (1)限定本文件的外部变量只在本文件中使用。 在外部变量定义前加一个static ,即静态外部变量,使其 具有局部化。 (2)将外部变量的作用域在本文件范围扩充。 对于位于定义点之前的函数,用extern说明,其扩充到该 函数中。 P124_4.18 (3)将外部变量作用到其它文件 在需要这些变量的文件中对变量用extern进行声明。 P125_ 3、外部变量的副作用 模块间联系太多,外部依赖太多,降低独立性
小结: 1、动态变量 (1)自动变量auto (2)寄存器变量 register 2、静态变量 static 3、外部变量 扩充 extern 在定义点之外扩充(文件内或文件外) 作业:1、编写求最大公约数的程序 2、P1384.12
小结: 1、动态变量 (1) 自动变量 auto (2) 寄存器变量 register 2、静态变量 static 3、外部变量 扩充 extern 在定义点之外扩充(文件内或文件外) 作业:1、编写求最大公约数的程序 2、P138_4.12