如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
会计学概述(2)变量的生命期:变量占据内存的时间期限.静态变量:静态变量存储空间在程序的整个运行期间是固定的。一个变量被指定为静态,在编译时分配存储空间,程序一开始执行便被建立,直到该程序执行结束都是存在的。动态变量:动态变量是在程序执行当中被动态建立、动态撤销的,仅存在于函数被调用期间。变量的存储类别决定了变量的作用域和生命期,变量的存储类别共有四种:自动型(auto)外部型(extern)静态型(static)寄存器型(register)自动变量和寄存器变量属于动态存储方式,外部变量和静态内部变量属于静态存储方式。1.自动型(auto)变量是变量被说明时,存储类信息可以缺省的,并且变量的说明出现在函数内部,这样的变量的存储类别就是自动型。intf(inta){autointb,c;floatd,e;::}复合语句(Block)也可出现变量说明,当缺省存储类别信息时,就属于自动型变量。main(){inta,b,c;:{floatd,e;/*存储类别是隐式说明,即存储类别是自动型*/:}:}自动型变量一旦说明只能在说明该变量的函数或复合语句中出现才算有效。离开了上述区域,对该变量的引用是无效的,不合法的。doublefun1(doublep1){intp2,p3;:p1,p2,p3的有效区域:}Charfun2(charp4){charp5,p6;:p4,p5,p6的有效区域:}main(){floatx,y;::{inta,b;:a,b的有效区域:x,y的有效区域}::}内部变量和外部变量变量说明的位置不同,其作用域也不同,据此将C语言中的变量分为内部变量和外部变量。内部变量:在一个函数内部说明的变量是内部变量,它只在该函数范围内有效。也就是说,只有在包含变量说明的函数内部,才能使用被说明的变量,在此函数之外就不能使用这些变量了。所以内部变量也称“局部变量”。例如:intf1(inta)/*函数f1*/{intb,c;……}/*a,b,c作用域:仅限于函数f1()中*/intf2(intx)/*函数f2*/{inty,z;……}/*x,y,z作用域:仅限于函数f2()中*/main(){intm,n;……}/*m,n作用域:仅限于函数main()中*/关于局部变量的作用域还要说明以下几点:1.主函数main()中定义的内部变量,也只能在主函数中使用,其它函数不能使用。同时,主函数中也不能使用其它函数中定义的内部变量。因为主函数也是一个函数,与其它函数是平行关系。这一点是与其它语言不同的,应予以注意。2.形参变量也是内部变量,属于被调用函数。3.允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。4.在复合语句中也可定义变量,其作用域只在复合语句范围内。2.外部(extern)变量是指,在一个函数中合法出现的同时,又可以在其它函数中合法出现。inta,b;voidf(){a+=2;b+=3;::}main(){a=1;b=2;::f();::}外部变量的说明也可出现在函数的内部,例如:intb,c;/*b,c是外部变量*/intf(inta){externintd,e;/*d,e是外部变量*/d=e=3;::}intd,e;main(){::}如果定义点之前的函数需要引用这些外部变量时,需要在函数内对被引用的外部变量进行说明。(不带存储类别的外部变量说明称为变量的定义性说明,带存储类别的外部变量说明称为变量的引用性说明)外部变量引用性说明的一般形式为:extern数据类型外部变量[,外部变量2……];externintd,e;注意:外部变量的定义性说明和外部变量的引用性说明是两回事。外部变量的定义性说明必须在所有的函数之外,且只能定义一次。而外部变量的引用性说明,出现在要使用该外部变量的函数内,而且可以出现多次。外部变量的作用域是从其出现的位置直至程序正文结束。extern变量的生命期是整个程序执行期。外部变量作用是为了在函数与函数之间,文件与文件之间进行通信,即外部变量起“全局变量”的作用。3.静态(static)变量生命周期:整个程序的执行过程有效范围:函数或文件内部外部静态变量(静态全局变量)内部静态变量(静态局部变量)【例6.12】求1~5的阶乘。#include<stdio.h>longfactor(intn){staticintf=1;f=f*n;returnf;}main(){longi;for(i=1;i<=5;i+