简单程序设计..ppt
《简单程序设计..ppt》由会员分享,可在线阅读,更多相关《简单程序设计..ppt(31页珍藏版)》请在三一办公上搜索。
1、第6章 简单程序设计,6.1 程序开发过程6.2 文件之间的信息共享6.3 头文件6.4 生存期 Return,6.1 程序开发过程,C+程序一般是多文件结构的。这样,每个文件的长度相对较小,功能相对单一,维护方便。便于多人合作开发。若一个文件的代码有改变只需重新编译此文件而不必重新编译所有文件。预编译负责处理各个源文件和头文件中的预编译指令;编译程序将源程序翻译成对应的二进制代码文件,扩展名为.obj;连接程序将所有.obj和用到的库文件连接起来,形成一个可执行文件。Return,6.2 文件之间的信息共享,6.2.1外部变量6.2.2外部函数6.2.3静态全局变量与静态函数Return,6
2、.2.1外部变量,在函数外部定义的变量称为外部变量。外部变量不属于任何一个函数,其作用域是:从外部变量的定义位置开始,到本文件结束为止。外部变量可被作用域内的所有函数直接引用,所以外部变量又称全局变量。(1)外部变量可加强函数模块之间的数据联系,但又使这些函数依赖这些外部变量,因而使得这些函数的独立性降低。(2)在同一源文件中,允许外部变量和内部变量同名。在内部变量的作用域内,外部变量将被屏蔽而不起作用。(3)定义点前的函数引用这些外部变量时,需要在函数内对被引用的外部变量进行说明。外部变量说明的一般形式为:extern 数据类型 外部变量,外部变量2;注意:外部变量的定义和说明是两回事。外部
3、变量的定义,必须在所有的函数之外,且只能定义一次。而外部变量的说明,出现在要使用该外部变量的函数内,而且可出现多次。return,6.2.2外部函数,函数无全局与局部之分,一般是可以共享的。在另一文件中要使用这个函数,只要说明一下函数原型即可。也就是C+中函数的说明默认是extern的。所以可在原型说明时省略前面的extern。return,6.2.3静态全局变量与静态函数,若不希望某文件中定义的某些变量或函数被其它文件使用,可将这些变量或函数定义成静态(static)的。使用static全局变量和函数的好处:可将某些实现细节封装进来,既安全又简化了文件之间的接口;不同文件可使用同名变量或函数
4、而不必担心名字冲突。return,不同的存储类型,在语言中,对变量的存储类型说明有以下四种:自动变量(auto)、寄存器变量(register)、外部变量(extern)、静态变量(static)。自动变量和寄存器变量属于动态存储方式,外部变量和静态内部变量属于静态存储方式。,内部变量的存储方式,1静态存储静态内部变量(1)定义格式:static 数据类型 内部变量表;(2)存储特点:静态内部变量属于静态存储。在程序执行过程中,即使所在函数调用结束也不释放。换句话说,在程序执行期间,静态内部变量始终存在,但其它函数是不能引用它们的。定义若不初始化,则自动赋以(整型和实型)或0(字符型);且每次
5、调用它们所在的函数时,不再重新赋初值,只是保留上次调用结束时的值!(3)何时使用静态内部变量:需要保留函数上一次调用结束时的值。变量只被引用而不改变其值。,静态存储例:,#include#define RESET trueunsigned counter(bool reset=!RESET)static unsigned cnt=0;if(reset)return cnt=0;return+cnt;void main()cout counter();cout counter();cout counter();cout counter(RESET);cout counter();cout cou
6、nter();coutn;,2动态存储自动局部变量(又称自动变量)(1)定义格式:auto 数据类型 变量表;(2)存储特点1)自动变量属于动态存储方式。在函数中定义的自动变量,只在该函数内有效;函数被调用时分配存储空间,调用结束就释放。在复合语句中定义的自动变量,只在该复合语句中有效;退出复合语句后,也不能再使用,否则将引起错误。2)定义而不初始化,则其值是不确定的。如果初始化,则赋初值操作是在调用时进行的,且每次调用都要重新赋一次初值。3)由于自动变量的作用域和生存期,都局限于定义它的个体内(函数或复合语句),因此不同的个体中允许使用同名的变量而不会混淆。即使在函数内定义的自动变量,也可与
7、该函数内部的复合语句中定义的自动变量同名。建议:系统不会混淆,并不意味着人也不会混淆,所以尽量少用同名自动变量!,3寄存器存储寄存器变量一般情况下,变量的值都是存储在内存中的。为提高执行效率,语言允许将局部变量的值存放到寄存器中,这种变量就称为寄存器变量。定义格式如下:register 数据类型 变量表;(1)只有局部变量才能定义成寄存器变量,即全局变量不行。(2)对寄存器变量的实际处理,随系统而异。例如,微机上的MSC和TC 将寄存器变量实际当作自动变量处理。(3)允许使用的寄存器数目是有限的,不能定义任意多个寄存器变量。Return,外部变量的存储方式,外部变量属于静态存储方式:(1)静态
8、外部变量只允许被本源文件中的函数引用其定义格式为:static 数据类型 外部变量表;(2)非静态外部变量允许被其它源文件中的函数引用定义时缺省static关键字的外部变量,即为非静态外部变量。其它源文件中的函数,引用非静态外部变量时,需要在引用函数所在的源文件中进行说明:extern 数据类型 外部变量表;注意:在函数内的extern变量说明,表示引用本源文件中的外部变量!而函数外(通常在文件开头)的extern变量说明,表示引用其它文件中的外部变量。,静态局部变量和静态外部变量同属静态存储方式,但两者区别较大:(1)定义的位置不同。静态局部变量在函数内定义,静态外部变量在函数外定义。(2)
9、作用域不同。静态局部变量属于内部变量,其作用域仅限于定义它的函数内;虽然生存期为整个源程序,但其它函数是不能使用它的。静态外部变量在函数外定义,其作用域为定义它的源文件内;生存期为整个源程序,但其它源文件中的函数也是不能使用它的。(3)初始化处理不同。静态局部变量,仅在第1次调用它所在的函数时被初始化,当再次调用定义它的函数时,不再初始化,而是保留上一次调用结束时的值。而静态外部变量是在函数外定义的,不存在静态内部变量的“重复”初始化问题,其当前值由最近一次给它赋值的操作决定。,务必牢记:把局部变量改变为静态内部变量后,改变了它的存储方式,即改变了它的生存期。把外部变量改变为静态外部变量后,改
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 程序设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-4103784.html