变量的作用域与生存期资料讲解.ppt
《变量的作用域与生存期资料讲解.ppt》由会员分享,可在线阅读,更多相关《变量的作用域与生存期资料讲解.ppt(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、变量的作用域与生存期作用域与生存期概述变量的作用域(空间特性)v变量的作用域也称为可见性,指变量能够被访问的范围v分为局部变量和全局变量两类:局部变量的范围较窄,限定在程序中的部分区域;全局变量的范围较宽,可以是整个文件甚至是整个程序变量的存储类别(时间特性)v除作用域(可见性)外的另外两个特性:变量存放在计算机何处,变量何时存在 存储类别v变量存在的位置:RAM 或 CPU寄存器vRAM 划分:代码区、静态存储区、动态存储区v存储类别:RAM:static、auto,CPU:register代码区代码区静态存储区静态存储区动态存储区动态存储区全局变量、局部静态变量全局变量、局部静态变量形参变
2、量形参变量局部动态变量(局部动态变量(auto register)函数调用现场保护和返回地址等函数调用现场保护和返回地址等寄存器变量 v格式:register 类型 变量名列表;for(register int a=0;a1000000;a+)v寄存器变量存在于 cpu 内部的寄存器中,数量很少,一般是将循环使用很多次的变量放在寄存器中,加快执行速度。v注意:l只有整型变量能放在寄存器中,包括:只有整型变量能放在寄存器中,包括:int、char、short、long等。等。l寄存器变量必须是寄存器变量必须是 auto 类型的局部变量、形参,不能类型的局部变量、形参,不能是全局变量或静态变量。是
3、全局变量或静态变量。v 由于寄存器数量很少,不能保证定义的寄存器变量总是能分配到寄存器,这时作为普通变量。v对于寄存器变量,不能做取地址(&)运算。例例 使用寄存器变量使用寄存器变量int fac(int n)register int i,f=1;for(i=1;i=n;i+)f=f*i;return(f);void main()int i;for(i=1;i=1000;i+)printf(“%d!=%dn”,i,fac(i);1、只有、只有局部自动变量和局部自动变量和形式参数形式参数可以作为寄存器可以作为寄存器变量变量2、不能定义、不能定义任意任意多个寄多个寄存器变量存器变量3、局部、局部静
4、态静态变量不能定义变量不能定义为寄存器变量为寄存器变量静态内部变量 v格式:static 类型 变量名列表;static int a;v形参不能是定义成 static。v内部变量定义成 static 后,作用域不变,但生存期变长,在整个程序执行前就存在,直到程序结束才清除掉,其生存期为整个程序的运行期。v使用注意:l静态变量只初始化一次。l静态变量的值具有“记忆”性。l尽管生存期变长,但作用域(可见性)仍然局限在定义它的局部范围内。void main()int i;for(i=0;i 3;i+)inc1();for(i=0;i 3;i+)inc2();例例 静态内部变量的生存期静态内部变量的生
5、存期#include void inc1()int x=0;x+;printf(in inc1 x=%dn,x);void inc2()static int x=0;x+;printf(in inc2 x=%dn,x);运行结果:运行结果:in inc1 x=1in inc1 x=1in inc1 x=1in inc2 x=1in inc2 x=2in inc2 x=3外部变量外部变量-全局变量全局变量v定义:在定义:在函数外定义函数外定义,可为,可为本文件所有函数共用本文件所有函数共用v作用域:从作用域:从定义变量的位置开始定义变量的位置开始到本源文件结束,到本源文件结束,及有及有exter
6、n说明说明的其它源文件的其它源文件v生存期:整个程序运行期间生存期:整个程序运行期间!应尽量少使用全局变量,因为:应尽量少使用全局变量,因为:Y全局变量在程序全部执行过程中占用存储单元全局变量在程序全部执行过程中占用存储单元Y降低了函数的通用性、可靠性,可移植性降低了函数的通用性、可靠性,可移植性Y降低程序清晰性,容易出错降低程序清晰性,容易出错 定义定义 说明说明u次数:次数:只能只能1次次 可说明多次可说明多次u位置:位置:所有函数之外所有函数之外 函数内或函数外函数内或函数外u分配内存:分配内存:分配内存分配内存,可初始化可初始化 不分配内存不分配内存,不可初始化不可初始化v用用 ext
7、ern 声明声明外部变量:外部变量:extern 数据类型数据类型 变量表;变量表;v外部变量外部变量定义定义与外部变量与外部变量说明说明(声明声明)不同不同v若外部变量与局部变量若外部变量与局部变量同名,同名,则外部变量则外部变量被屏蔽被屏蔽v外部变量可用存储类型外部变量可用存储类型:缺省缺省 或或 static/*ch7_17.c*/int a=3,b=5;int max(int a,int b)int c;c=ab?a:b;return(c);void main()int a=8;printf(max=%d,max(a,b);例例 外部变量与局部变量(同名的局部变量外部变量与局部变量(同
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 变量 作用 生存 资料 讲解
限制150内