第3章C语言的变量

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第3章C语言的变量2第3章C语言的变量3.1变量的生存期和作用域3.2局部变量与全局变量3.3变量的存储与变量的作用域3.4变量使用实例3.5小结33.1变量的生存期和作用域3.1.1变量的生存期3.1.2变量的作用域43.1.1变量的生存期全局生存期指变量在程序运行一开始就被建立,而在程序运行结束后才从内存中删除。具有全程生存期的变量是全局变量和静态变量,具有全局生存期的变量存储在程序的静态数据存储区中。动态生存期变量在程序运行过程中,因需要使用才建立,而使用结束就被删除。具有动态生存期的变量有局部自动变量和寄存器变量,具有动态生存期的变量存储在程序的动态数据区中。【例3-1】使用for循环连续打印变量值,以说明全程生存期和动态生存期的区别。53.1.2变量的作用域全局作用域对于具有全局作用域的变量,可以在程序的任何位置访问它们。局部作用域变量在复合语句内部或者函数内部声明,无法被复合语句外或者其他函数的代码所访问。文件作用域变量仅在声明它的源代码文件中可见,一般用static修饰符指定变量具有文件作用域。63.2局部变量与全局变量3.2.1局部变量3.2.2全局变量3.2.3变量的屏蔽效果73.2.1局部变量在C语言中,变量的作用域只在一定范围内有效称之为局部变量。在以下各位置定义的变量均属于局部变量:(1)在函数体内定义的变量,变量的作用域局限于函数体内;(2)在复合语句内定义的变量,变量的作用域局限于复合语句内;(3)有参函数的形参也是局部变量,变量的作用域只在其所在的函数范围内有效。【例3-2】该例详细说明局部变量的用法。83.2.2全局变量全局变量是在函数之外定义的变量(所有函数前、各个函数之间、所有函数后)。全局变量的作用域为从定义全局变量的位置起到本源程序结束为止。【例3-3】通过改写代码【例3-2】来说明全局变量的用法。93.2.3变量的屏蔽效果在C语言中,如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量被“屏蔽”,即它不起作用,这种情况称为变量的“屏蔽”。【例3-4】该例通过实现求两个整数之和,说明变量的屏蔽。103.3变量的存储与变量的作用域3.3.1变量的存储3.3.2自动型变量3.3.3静态变量3.3.4外部变量3.3.5寄存器变量3.3.6变量存储类型小结113.3.1变量的存储变量的存储类型包括“静态存储”和“动态存储”。静态存储是指在程序运行期间分配固定的内存空间,直至整个程序结束。例如前面介绍的全局变量就是这种存储类型。动态存储是在程序运行期间根据需要动态的分配存储空间,使用它时才分配存储单元,使用完毕立即释放。例如函数的形式参数,在函数定义时并不给形参分配存储单元,只是在函数被调用时,才予以分配,函数调用完毕立即释放。如果一个函数被多次调用,则反复地分配、释放形参变量的存储单元。123.3.2自动型变量自动型变量是C语言程序中使用最广泛的一种变量,一般存储在栈区。自动型变量是用关键字“auto”来声明,定义的一般格式为:auto数据类型变量名特点:(1)自动型变量只有在使用它,即定义该变量的函数被调用时才给它分配存储单元。(2)自动变量的作用域是局部作用域。(3)由于自动变量的作用域和生存期都局限于定义它的个体内(函数或复合语句内),因此不同的个体中允许使用同名的变量而不会混淆。133.3.3静态变量静态变量一般存储在静态数据区,用“static”关键字来声明,静态变量一般分为静态全局变量和静态局部变量,定义的一般格式为:static数据类型变量名静态局部变量局部变量加以static进行声明就是静态局部变量。【例3-5】通过求1到100的和,说明静态局部变量的使用方法。静态全局变量全局变量加以static进行声明就是静态全局变量。143.3.4外部变量在前面讲全局变量时已经提到,如果需要扩展外部变量的作用域,使其在程序中的各个源文件和各个函数中都可以使用此全局变量,就需要用“extern”关键字来声明全局变量。外部变量声明的一般格式为:extern变量名外部变量的使用主要分为两种情况:(1)在一个源代码文件内声明外部变量。(2)在多个源代码文件间声明外部变量。153.3.5寄存器变量为了提高程序的执行效率,C语言允许变量存放在CPU的寄存器中,这样CPU就不用经常花费较长时间访问内存区。这样的变量称之为寄存器变量。使用关键字“register”声明,声明格式为:register数据类型变量名【例3-6】通过求20的阶乘,介绍寄存器变量。163.3.6变量存储类型小结按照作用域分类如图所示:局部变量非静态全局变量(可用extern声明)静态全局变量自动变量静态局部变量寄存器变量函数形参173.3.6变量存储类型小结按照生存期分类,如图所示:动态存储静态存储自动变量寄存器变量函数形参静态局部变量全局变量183.4变量使用实例【例3-7】计算1~7的平方值及平方和。该实例打印出1到7的平方值,最后打印出1到7的平方值的和,其中全局变量sum出现在多个函数中。193.5小结本章介绍了在函数以及程序设计中,变量的生存期、作用域和存储类型。作用域是指变量的可见范围,分为局部作用域、全局作用域和文件作用域。生存期是指变量存在的时间,包括全局生存期和动态生存期。存储类型包括自动(auto)、静态(static)、外部(extern)和寄存器(register)4种,这4种变量都有各自的作用域和生存期。

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功