- 2
- 0
- 约 53页
- 2016-11-25 发布于浙江
- 举报
new chapter 6
6.8 变量的存储类型和作用域 一. 若干概念: 1. 作用域:变量的使用范围(由存储区域和说明的位置决定) 2.可见性:变量可被作用域内语句调用的属性 3.存在性:变量所分配存储空间的可使用属性 4.存储类型:auto--自动型 register--寄存器型 static--静态型 extern -----外部型 5. 静态存储:程序运行期间分配固定存储空间 6. 动态存储:程序运行期间根据需要动态分配存储空间 7. 用户内存: 二. auto——自动型/堆栈型变量 (1)存储在堆栈区/动态存储区。 (2)auto型变量在函数体内说明或缺省说明;形参缺省说明。 (3)值的暂时性:进入函数时分配堆栈空间,退出函数后,空间自动释放,变量不再存在,不得继续访问。 (4)auto型变量未初始化时,其值无意义,必须先赋初值再引用。 (5)作用域局部性,仅限于定义它的模块。 (6)可见性与存在性基本一致,但具有一定的独立性(在重名变量的作用域上不可见)。 void main( void ) { int x; { float x=2.5; { char x=c; printf(1st x=%c\n,x); } printf(2nd x=%f\n,x); } printf(3th x=%d\n,x); } 三. register——寄存器型变量 1. register型变量直接将数值存储在CPU的通用寄存器中,程序运行时无需读写内存即可使用,高效、便捷。 2. register型变量只能在函数体内说明、使用; 3.值的暂时性: register型变量进入函数时临时分配寄存器,退出函数后,寄存器自动释放,变量不再存在,不得继续访问。 4. 变量未初始化时,其值无意义。必须先赋值再使用! 5.一些系统的通用寄存器字长有限,register型变量不能为double, float型。 6. 由于CPU中的通用寄存器个数有限,register型变量数目太多会自动转为auto型。 7.优化的编译系统自动将使用频繁的变量放在寄存器中,不再需要程序员指定谁是register型变量。 四. static——静态型变量 1. 静态型变量存储在静态存储区 2. 静态型变量定义在函数内部时——局部静态变量,作用域仅限于函数内部;静态型变量定义在函数外部时——外部静态变量,作用域限于本源程序文件(寿命全局); 3.值的永久性:一经说明分配存储空间就一直占用该空间直到程序运行结束; 4. 变量未初始化时自动赋0值! 4. 可见性与存在性不一致; 5.编译时赋初值(仅一次:每次调用时不再赋初值,保留上次调用结束时的值!) // Program: EG06-20.C // Description: 打印1~10的阶乘数值。 #include stdio.h int fac(int n) { static int f=1; return f*=n; } void main( void ) { int i; for(i=1;i11;i++) printf(%d!=%d\n,i,fac(i)); } 基于全局变量的副作用,建议少用或不用全局静态变量。 五. extern——外部型变量 extern型变量存储在静态存储区,一般用于在多个编译单位之间传送数据; (1)extern型变量定义时缺省存储类型,说明时用extern扩展作用域; (2)作用域全局性、值的永久性、可见性与存在性一致; (3)extern型变量未初始化时自动赋0值; (4)extern型变量可多次说明,但只分配一次空间; (5)基于全局变量的副作用,建议少用或不用extern型变量。 例 引用其它文件中的外部变量 int global; extern float x; main() { int local; . . . } extern int global; static int number; func2() { . . . } float x; static int number; func3() { extern int global; . . . } file1.c file2.c file3.c int max(int x, int y) { in
您可能关注的文档
最近下载
- 【高考真题】2022年新高考物理真题试卷——湖南卷(含答案).pdf VIP
- 毕业设计论文-江苏工程职业技术学院.doc VIP
- 新人教版八年级物理下册第七章练习题.docx VIP
- 2022电网企业文化、电力与能源战略题库.pptx VIP
- 索尼A7RM3A使用说明书+入门帮助指南【完整电子版】.pdf VIP
- 【武汉市生鲜农产品的冷链物流发展现状、问题及对策探究16000字(论文)】 .pdf
- 2026版教师职称-山西-山西教师职称(基础知识、综合素质、高中信息技术)历年参考题库含答案解析5套.docx VIP
- 2020-2021学年江苏省淮安市淮阴中学八年级(上)期末物理试卷含解析.doc VIP
- 变压器油中溶解气体在线监测装置.docx VIP
- 2026年春新版二年级道德与法治下册教学计划(含教学进度表).pdf VIP
原创力文档

文档评论(0)