C语言程序设计 第7章 变量的作用域和存储类型.ppt

C语言程序设计 第7章 变量的作用域和存储类型.ppt

ID:50351482

大小:134.50 KB

页数:21页

时间:2020-03-08

C语言程序设计 第7章 变量的作用域和存储类型.ppt_第1页
C语言程序设计 第7章 变量的作用域和存储类型.ppt_第2页
C语言程序设计 第7章 变量的作用域和存储类型.ppt_第3页
C语言程序设计 第7章 变量的作用域和存储类型.ppt_第4页
C语言程序设计 第7章 变量的作用域和存储类型.ppt_第5页
资源描述:

《C语言程序设计 第7章 变量的作用域和存储类型.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章变量的作用域和存储类型主要内容变量的作用域变量的存储类型变量的初始化程序案例小结习题第页7-1变量的作用域局部变量全局变量第页局部变量在函数内部或复合语句内部定义的变量,称作局部变量。函数的形参也属于局部变量。局部变量的作用域是定义该变量的函数或复合语句,在其他范围内无效。一般地,局部变量只有定义,没有说明,因为局部变量不能跨越几个编译单位使用。第页全局变量在函数外部定义的变量称作全局变量,也称外部变量。全局变量的作用域是从定义变量的位置开始,到整个文件结束停止。若全局变量和某个函数中的局部变量

2、同名,则在该函数中,这个全局变量被屏蔽。在该函数内,访问的是局部变量,与同名的全局变量不发生任何关系。由于通过return语句只能返回一个函数值,同时由于非数组作函数参数时采用值传递方式,这样,要想在函数之间传递大量的数据,一般来讲就只能利用全局变量或数组参数。第页7-2变量的存储类型自动变量(auto)外部变量(extern)静态变量(static)寄存器变量(register)第页7-2-1自动变量(auto)无论何时,只要一个变量在函数内部被说明,并且没有给出其存储类型,就认为它是自动存储类型变

3、量。一般定义形式为:auto数据类型变量名关键字auto加在变量名及其类型前面,用来说明它是自动变量。第页7-2-1自动变量(auto)自动变量的作用范围局限于定义它的函数。所以,自动变量是随函数的引用而存在和消失的,从上次调用到下次调用之间不保留值(即释放存储单元),必须在每次进入时要用赋值表达式赋值,否则其值是杂乱无章的。第页7-2-2外部变量(extern)任何在函数之外定义的变量都叫做外部变量。外部变量存储类型既可以描述一般变量,又能够用来描述函数。函数的存储类型一般都是外部的,因为不可能在一

4、个函数中定义另一个函数。一般定义形式为:extern数据类型变量名关键字extern加在变量名及其类型前面,用来说明它是外部变量。第页7-2-3静态变量(static)如果希望在函数调用结束后仍然保留函数中定义的局部变量的值,则可以将该局部变量定义为静态变量(或称为局部静态变量)。一般定义形式为:static数据类型变量名在变量名及其类型之前加上关键字static,该变量的存储类型就是静态的。静态变量分为内部静态变量和外部静态变量:在函数内部说明的静态变量是内部的,在函数之外说明的静态变量是外部的。第

5、页7-2-4寄存器变量(register)C语言中的寄存器变量通常在对执行速度要求很高的情况下使用。其思想是告诉编译程序把该变量保存在一个CPU寄存器中。因为数据在寄存器中操作比在内存中操作快,这样就提高了程序代码的执行速度。很显然,寄存器变量应用于那些使用频繁的变量(如循环计数器等)。一般定义形式为:register数据类型变量名在变量名及其类型之前加上关键字register,该变量的存储类型就是寄存器变量。第页7-3变量的初始化自动变量或寄存器变量的初始化静态变量和外部变量的初始化第页自动变量或寄

6、存器变量的初始化自动变量或寄存器变量可由任意表达式初始化,其实这就是赋值语句的缩写。先计算表达式的值,然后赋给相应说明的变量。如果没有对自动变量或寄存器变量初始化,那么,它们的值是杂乱无章的,绝不能认为它们的初值是0。每当控制转入一个函数或分程序内时,都要执行初始化。所以不管何时进入函数或分程序,这些变量的初始状态都是一样的。特别要注意,在C语言中不允许对自动数组初始化。如果想给一个自动数组赋值,只能反复使用赋值语句,一个一个地把指定值赋给相应元素。第页静态变量和外部变量的初始化对静态变量和外部变量的

7、初始化可采用表达式或初值符表。对简单类型的变量只能用表达式进行初始化对构造类型变量的初始化一般采用初值符表该表由指定的相应类型值构成,以逗号隔开,最外层用一对花括号括起来。第页7-4程序案例【例】计算1~5的阶乘。intjf(n)intn;{staticintf=1;f=f*n;return(f);}main(){inti;for(i=1;i<=5;i++)printf("%d!=%d",i,jf(i));}第页运行结果为1!=12!=23!=64!=245!=120第页接上每次调用函数,计算出i

8、!,同时保留值,以供求下一个阶乘时使用,这个保留的值其他函数不能使用。如果函数jf中变量f不定义为局部变量,运行结果为:1!=12!=23!=34!=45!=5第页7-5小结本章主要介绍了变量的作用域和变量的存储类型,现将本章知识归纳如下:变量的作用域是指该变量有定义的程序部分。从作用域的角度看,C语言中的变量分为局部变量和全局变量。在函数内部或复合语句内部定义的变量,称作局部变量。局部变量的作用域是定义该变量的函数或复合语句,在其他范围内无效。在函数外

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

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

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