C语言第八章ppt课件.ppt

C语言第八章ppt课件.ppt

ID:59476204

大小:145.50 KB

页数:24页

时间:2020-09-14

C语言第八章ppt课件.ppt_第1页
C语言第八章ppt课件.ppt_第2页
C语言第八章ppt课件.ppt_第3页
C语言第八章ppt课件.ppt_第4页
C语言第八章ppt课件.ppt_第5页
资源描述:

《C语言第八章ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、8第八章变量的存储类型第八章变量的存储类型本章介绍变量的存储类型。变量的存储类型确定了变量的存储方式、生命期、作用域。介绍自动变量、静态变量、外部变量和寄存器变量,及它们之间的区别。程序在系统中运行时,操作系统为其分配的存储空间可划分为如下的四个区域,每个区域存放不同的数据。函数调用是在公共数据区stackarea中建栈完成的。动态内存分配是在heaparea中进行分配的。程序代码全局数据,静态数据动态数据局部数据CodeareaDataareaheapareaStackarea数据区——全局生命期及作用域、静态生命期及作用域栈区——局部生命期及作用域堆区——动态生命期当数据存放在不同区

2、域时,具有不同的生命期和作用域。生命期也称为生存期,即标识符在程序运行中的时限。全局生命期指标识符在程序运行的全过程中存在。局部生命期指标识符在程序运行的局部阶段存在。作用域是指标识符在程序中的有效范围。作用域开始于标识符的说明处。可见性是分析在某一位置标识符的有效性,即表示该标识符在该位置是否可以被调用。它是从另一角度表现标识符的有效性。标识符的生命期和作用域与标识符在内存中的存储方式密切相关。8.1自动变量在函数(模块)内部定义的变量称为自动变量,也称为局部变量。其生命期和作用域均为局部的。即在函数(模块)内可见,作用域为函数内部。局部变量存放在栈区中,函数被调用时,局部变量在栈区被

3、分配存储空间,函数调用结束时,局部变量随之消失,其值不能保存。生命期是在函数调用期间。局部变量在C中没有缺省初值,未被显式初始化,其值不确定。自动变量使用关键字auto表示,通常auto可以省略。迄今为止,在前面已讨论过的程序中,如无特殊说明,使用的变量都是自动变量。不同函数可以使用同名的局部变量,便于大型软件开发中的分任务分模块的编程。例如:voidmain(){intn;/*等价于autointn;同名的局部变量*///……}voidfunc(){intn;/*等价于autointn;同名的局部变量*///……}8.2外部变量外部变量是在函数之外定义的变量,也称为全局变量。具有全局生

4、命期和作用域,程序中的每个函数都是可见的。外部变量存放在内存的全局数据区。定义外部变量时,若无显示初始化,编译器将外部变量初始化为0。外部变量通常在main()函数之前定义,一旦被定义可被后面函数访问。尽管外部变量是可以在程序任何函数之外定义,但定义点之前的函数是不可知的。例如:intfunc();intn=5;voidmain(){intm=n;pritf(“m=%d”,m);pritf(“n=%d”,n);pritf(“n=%d”,func());}intfunc(){ints=10;n=s;return(n);}结果:m=5n=5n=10则main()函数中语句m=n;无意义,编译

5、错。若将全局变量n定义在两函数之间:intn=5;8.3静态变量包括:静态局部变量及静态外部变量。1.静态局部变量静态局部变量也是在函数(模块)内部定义的变量,其作用域与局部变量类似,仅在函数内部可见,但由于存放在dataarea有固定的存储单元,函数调用结束后,其值得以保存。关键字为static静态局部变量与外部变量一样,若未初始化,其值为0。编译器对静态局部变量仅初始化一次,重复调用保留原值,不再进行初始化。下面是使用外部变量、静态局部变量、局部变量的例子。voidfunc();intn=1;/*外部变量*/main(){staticinta;/*静态局部变量*/intb=-10;/

6、*局部变量*/printf(”a:%db:%dn:%d”,a,b,n);b+=4;func();printf(”a:%db:%dn:%d”,a,b,n);n+=10;func();}voidfunc(){staticinta=2;/*静态局部变量多次函数调用仅初始化1次*/intb=5;/*局部变量,每次调用都初始化。*/a+=2;n+=12;b+=5;printf(”a:%db:%dn:%d”,a,b,n);}2.静态外部变量在函数之外定义的静态变量称为静态外部变量。静态外部变量与外部变量的作用域和生命期都是全局的。其主要区别是:前者作用域为定义该静态外部变量的源程序文件,后者作用域为

7、组成程序的所有源程序文件。结果:a:0b:-10n:1a:4b:10n:13a:0b:-6n:13a:6b:10n:358.4寄存器变量C语言中,还定义了另一种局部变量——寄存器变量定义形式:registerintindex;registercharc;其中,register是关键字。由于寄存器变量是存放在CPU中,而不是通常存放在内存中,因而加快了操作速度。用于使用频度高的变量。由于寄存器长度和个数的限制,寄存器变量只能用于整型和

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。