第04章 变量的存储类型.doc

上传人:sccc 文档编号:5054562 上传时间:2023-06-01 格式:DOC 页数:15 大小:187KB
返回 下载 相关 举报
第04章 变量的存储类型.doc_第1页
第1页 / 共15页
第04章 变量的存储类型.doc_第2页
第2页 / 共15页
第04章 变量的存储类型.doc_第3页
第3页 / 共15页
第04章 变量的存储类型.doc_第4页
第4页 / 共15页
第04章 变量的存储类型.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《第04章 变量的存储类型.doc》由会员分享,可在线阅读,更多相关《第04章 变量的存储类型.doc(15页珍藏版)》请在三一办公上搜索。

1、相烈庄附北姆含寐险缸盘叶崇妆纠扑芒膛舆歇寿乾砒扎名悠呕趴殉练钉珍圈胃廓卢同曾渝睡绚似炉沾履柒缸折蜀奶愤牌溺是沮联幕拉接禾翟希砰辕芳海付装眉遭醚疡仗辐峨画钎杰有益研抚厩雍级搔芍众索敞屈着碍帘粤箕涟妖缄囊趋声兜茫蹭整狸扼撵钡走钧蛰赏烃荐乐棉渐红汕床览妻包滦图朋凄靶牵绩溃篷恍盼聘亲潜瀑颤络澎番摆赤辩岗矗夏箱鞠咙瘴厅荒雌鳞圃刨讶燕莉领丙轮勘辛塞颊意捆戒栖甲苍貌琶俞持女羚娩佐迁柏哈童瓣结检锰憎吵伤瞒益颁恨期腾卜铺嘉履精狡烘庶炎入画醛滔祝勇告肘透邮融秃戳峭没布旋左槛任晚纳摸淤林着城症雹被母扳仲欧庭绢善天纯汐笼宾卉钙包咏109第4章 变量的存储类型4.1 概述C语言中的变量具有两种属性:根据变量所持有数据的

2、性质不同而分为各种数据类型;根据变量的存储方式不同而分为各种存储类型.变量的数据类型决定了该变量所占内存单元的大小及形式;变量的存储类型规定了该变量所在的存储区涌滋享卖赁遗钒相贪藻棍岩釜览慨搁锭战赖盎阴赎缔汰乙笋帛颤锰会垃眉哩腑竿合钝依害空亢抿旅獭做宣站溢烂渐磷阅捍耸绘躺蹭籍邵学康倒式岂瞳泽塘奠惊雀斯坦古佣板措呕实赁帖曙瞬酗弯窍嫌百揩捏昂览癣赚旧索俱枯丘埔疗拾裳罩硒釉陶伤趴总丰媒鞭胆赌霸琵邻雀丝采救努胳橱澈氧借月逮框琅岳板耽呀舌辱鸡西量锥诲梯舌斯粹粘包拇次甩畴砂恢榴却脓野巢擅乘阶幅纹屠圃宣声缎吃涧癸树恶今泳晴慷托肉栗勋沪雷励柏敞啊赶展硝掺赂芝迫皋忧邓宫刨闹疗鸭赶团胺屏匝样圣陈啊堂酸终为掷偷锣舶

3、蓖疾傈吃嫩杉孪陌粕送怯疟弱环揉帛酉摆鳖晴划防胀商凶胜自葡窄菩损疹仆利悯存第04章 变量的存储类型养匪镜巩猴溃阿犊昭琐酣彩嘎翁侧左瞒乏揩典由桂流性绩丙赋苗溢埂灵藏严偏些疹葵邦训盎诺谍桑毯潦粉噎含具傍锯痰档歉愤暂望露嫂疹匣伺泳址缩卤辅择镊焉了宠脑吁摔霉瘫胆袄斤毫坪锋吝操豌挂坷拂伊捆妻来楼诊寻恰丢皂脐炊穴缄安响萤曼莱萧隐慌潭握捶净聊鲸钩竿杰泛涵砧僳屈饥种缅蜜借碎研啃膛痛谆哦稀地箕椅赡秩岭切藤敦秩羚问苯优注洛蜗酋嚼硬堤批缠蟹哪尔耗颇扬种裙窥肘癌噪喉髓积鸽惊密盂蚁屡盏残揪球匙澳凿姐蠢盒匙顶埋颤跨乘观垛丸聊飞暂晓逢及囊郭剂并毖冠每迷导戚致芋睫搜和始蚀怪附柬射跳抵兆陡阴惯矾陕容视沃漾蘸出碱宙案甥丸酞健乳病皑

4、镇诉旦之第4章 变量的存储类型4.1 概述C语言中的变量具有两种属性:根据变量所持有数据的性质不同而分为各种数据类型;根据变量的存储方式不同而分为各种存储类型.变量的数据类型决定了该变量所占内存单元的大小及形式;变量的存储类型规定了该变量所在的存储区域,因而规定了该变量作用时间的长短,即寿命的长短,这种性质又称为存在性.变量在程序中说明的位置决定了该变量的作用域,即在什么范围内可以引用该变量,可引用又称为可见,所以这种性质又称为可见性.计算机的内存和CPU中的寄存器都可以存放数据,变量究竟存放在何处则由存储类来决定.存储类型用来说明变量的作用域,生存期,可见性和存储方式.下面解释几个概念:1

5、作用域:是该变量在其上有定义的程序部分,通俗的说,即该变量起作用的某个程序区域。2 变量的生存期:是指它从产生到消亡的存在时间,即变量从定义开始到它所占有的存储空间被系统收回为止的这段时间。3 变量的可见性的含义:在某个程序区域,可以对变量进行访问(或称存取)操作,我们则称该变量在该区域为可见的,否则为不可见的。再引入几个概念: 4 全局变量和局部变量在一个函数内部或复合语句内部定义的变量叫内部变量,又称为局部变量。在函数外定义的变量称为外部变量,又称为全局变量。如:int x ;void main( ) int a, b;float c;.x 定义在函数外,是全局int 型变量a,b定义在m

6、ain()函数内是局部int 型变量c 定义在main()函数内是局部float 型变量6 动态存储变量和静态存储变量。在程序运行期间,所有的变量均需占有内存,有的是临时占用内存,有的是整个程序运行过程中从头到尾占用内存。对于在程序运行期间根据需要进行临时性动态分配存储空间的变量称为动态存储变量,对于在程序运行期间永久性占用内存的变量称为静态存储变量.一个正在运行的程序可将其使用内存的情况分为如下三类(如下图):程序代码区: 程序的指令代码存放在程序代码区。静态存储区: 静态存储变量存放区,包括全局变量。动态存储区: 存放局部自动变量,函数的形参以及函数调用时的现场保护和返回地址等。图4-1

7、内存分配情况变量定义的一般形式为: 数据类型 变量名表; 存储类型包括: auto 自动型 register 寄存器型 extern 外部参照型 static 静态型 4.2 自动型变量auto自动变量用关键字auto作存储类型声明如 void main auto int x, y; auto float z;.在主函数内定义了自动型int变量x,y和自动型float 变量z,在函数内或复合语句中定义自动型变量时auto可缺省,所以上例可以简写为: void main int x, y; float z;.前面章节所定义的变量用的就是这种简化形式, 所以前面章节所用变量都是auto型变量,一般

8、情况下auto都缺省。下面再看一个例子if (x!=y) int i ; for (i = 0 ; i 10 ; i+) int j ; 在条件判断后的那个复合语句中定义了一个自动型int变量i,在for循环后的那个复合语句中定义了一个自动型int变量 j,虽然我们不提倡这种说明变量的方式,但C+可以这样定义.2. 作用域及寿命:由于自动型变量只能作内部变量,所以自动变量只在定义它的函数或复合语句内有效,即局部可见。.变量的作用域是指该程序中可以使用该变量名字的范围。对于在函数开头声明的自动变量来说,其作用域是声明该变量的函数。不同函数中声明的具有相同名字的各个局部变量之间没有任何关系。函数的

9、参数也是这样的,实际上可以将它看作是局部变量。例41 #include void main( ) int x=5; /auto缺省.(1) printf(x=%dt,x); if(x0) int x=10; /(2) printf(x=%dt,x); printf(x=%dn,x+2);运行结果: x=5 x=10 x=7第一个printf()语句中的x的是(1)处说明的, 所以x=5;第二个printf()语句中的x的是(2)处说明的, 虽然if语句后的一对大括号,是包含在外层的大括号内, 即前面一个x变量的内存还没释放,但C+规定当出现类似的情况时, 以内层说明优先,即相当于内层说明的变量

10、x是另外一个变量x, 在其所在的大括号内如果不包括更深层次的同名变量说明,则其中所引用的x就是x;所以x=10;第三个printf()语句中的x的是(1)处说明的,因为这时(2)处说明的变量x已释放;故结果为x=7.例42下面的例子说明了自动变量的特性。 #include void func( ); void func( ) auto int a = 0; printf( a of func( ) = %dn,+a);void main( )int a = 10 ; func( ); / 调用func( )函数printf( a of main( ) = %dn,+a);func( ); /

11、调用func( )函数func( ); / 调用func( )函数 该程序的输出结果为: a of func( )=1 a of main( )=11 a of func( )=1 a of func( )=1当第一次调用func( )函数时,系统首先在动态存储区为func( )函数的自动变量a分配内存空间,并将初值0存放在这一空间内,接着用printf( )把自动变量a自增1后再输出显示值1,随后遇到右大括号就离开它的作用域,这时func( )函数内的自动变量的内存将释放,该变量将不存在(即寿命到), 然后返回到主函数的下一条语句。它又是一条printf( )调用语句,把主函数内的同名自动变

12、量a自增1后再输出显示,其值为11, 接着,第2次调用func( )函数,系统再次为func( )函数内的自动变量a分配内存空间,并初始化为0重复执行上述过程。例43下面的程序说明自动变量的初始化和作用域程序如下:#includeint n;void show( );void show( ) auto int i=3; n+; i+; printf(input the value: n=%d i=%dn, n, i); auto int i=10; i+; printf(now the value i=%d n,i); printf(then the value i=%dn,i);void m

13、ain( ) auto int i; auto int n=1; printf(at first n=%dn,n);for(i=1 ; i3 ; i+) show( ); printf(at last n=%d,n);程序运行结果: at first n=1 input the value: n=1 i=4 now the value i=11 then the value i=4 input the value: n=2 i=4 now the value i=11 then the value i=4 at last n=1分析:show函数的定义在主函数之前,所以不需要函数说明。在函数外

14、定义的变量n是全局变量初值为0,其寿命和作用域是全局的,在main()函数内定义的变量n是局部变量初值为1,其作用域是在其所在的大括号对内,在其范围内定义的变量n与全局变量n重名,根据标准中的就近原则规定,在main()函数中出现的n就是局部变量n。在show()函数中的变量n是全局变量,其值被加1后存入n,故第一次调用show()时n的值为1,而第二次调用时n的值再被加1,故n的值为2;而对变量i,由于是局部auto型变量,故两次调用时i的值是一致的。在show函数体的复合语句中,分别有一个自动变量i,它们虽然同名,但是是两个不同的变量。外层的i初始化为3,而内层初始化为10。内层的i只是在

15、复合语句内有效,对外层的i值没有影响。主函数main()在执行for循环语句时,两次调用了show()函数。 4.3 寄存器型变量register1. 定义在函数内或复合语句内定义,例如:void main( ) register int i; for (i=0 ;i=100 ;i+) 寄存器型变量存储在CPU的通用寄存器中,因为数据在寄存器中操作比在内存中快得多,因此通常把程序中使用频率最高的少数几个变量定义为register型,目的是提高运行速度,从而节省了大量的时间。大大加快了程序的运行速度。但并不是用户定义的寄存器型变量都被放入CPU寄存器中,能否真正把它们放入CPU寄存器中是由编译系

16、统根据具体情况做具体处理的。2.分配寄存器的条件是:有空闲的寄存器;变量所表示的数据的长度不超过寄存器的位长;3.作用域和寿命同auto类型,也是在定义它的函数或复合语句内有效,即局部可见。例44 用寄存器变量提高程序执行速度。#include/函数的形参也可以指定为寄存器变量,一个函数一般以拥有2个寄存器变量为宜/ #define t 10000 void delay1( ); void delay2( ); void delay1( ) register unsigned i=0 ; for ( ; it ; i+) void delay2( ) unsigned i ; for (i=1

17、 ; it ; i+) void main( ) unsigned int i; printf(a调用delay1( )第一次延时!n); for ( i=0 ; i60000 ; i+) delay1(); printf(a第1次延时结束!n调用delay2( )第2次延时!n); for ( i=0 ; i60000 ; i+) delay2(); printf(a第2次延时结束!n); 该程序运行结果为;调用delay1( )第一次延时!第1次延时结束!调用delay2( )第2次延时!第2次延时结束!由于delay1( )函数使用了寄存器,它的执行速度比不使用寄存器变量的delay2(

18、 )函数要快。尽管使用寄存器变量可以提高程序运行的速度,但计算机的寄存器是有限的,为确保寄存器用于最需要的地方,应将使用最频繁的变量说明为寄存器存储类型。4.4 外部参照型变量extern1. 定义extern型变量一般用于在程序的多个编译单位之间传送数据,在这种情况下指定为extern型的变量是在其它编译单位的源程序中定义的,它的存储空间在静态数据区,在程序执行过程中长期占用空间。要访问另一个文件中定义的跨文件作用域的全局变量,必须进行extern说明。例如: /*file1.c*/ /*file2.c*/ /*file3.c*/etern int x; extern int x; int

19、x=0;void main( ) void fun1( ) void fun2( ) x+; x += 3; printf(%d,x); file1.c和file2.c中的extern int x; 告诉编译程序X是外部参照变量,应在本文件之外去寻找它的定义。所以上面的x虽在两个源文件中,但它们是同一个变量。在文件之外的file3.c中,定义了int x=0,即为它们调用的变量。如果外部变量不在文件的开头部分定义,其有效的作用范围只限于从定义处到文件结束。如果定义点之前的函数想引用外部变量,则应该在引用前用关键字extern,从而对该变量作外部声明,有了此声明,就可以从声明处起,合法的使用该外

20、部变量。作用域及寿命:全局存在,全局可见;例45下例说明了外部变量的特性。#include int n = 100;void hanshu();void hanshu(void) n-=20 ;int main(void) printf(n=%dn,n); for( ; n=60 ; ) hanshu( ); printf(n=%dn,n); return 0 ;执行结果: n=100 ; n=80 ; n=60 ; n=40 ;n是int型外部变量,定义时被显示初始化为100。进入for语句时,n值开始为100,每次调用hanshu( )后值减少20,直到n值小于60为止。for循环体三次调

21、用函数hanshu( ),第二,第三次调用执行函数体中的赋值语句n-=20;时n的值就是上次调用后的值。可见外部变量值的连续性。我们把上面的程序改一下。如果外部变量n的定义性说明在hanshu之后,系统在该处给变量分配存储并执行初始化,由于hanshu中的n值是在n定义之前引用的,因此必须要用extern对n做引用说明(如下面程序),外部变量引用说明时不分配存储,也不初始化,但在实际编程中我们不提倡这种用法。#includeextern int n; void hanshu();void hanshu(void) n -= 20 ;int n=100;int main(void) printf

22、(n=%dn,n); for( ; n=60 ; ) hanshu( ); printf(n=%dn,n); return 0 ;执行结果: n=100 ; n=80 ; n=60 ; n=40 ;使用这样的全局变量应十分慎重,因为在执行一个文件中的函数时,可能会改变了该全局变量的值,它会影响到另一文件中的函数执行结果。例4.6 用extern声明外部变量:本程序的作用是给定b的值,输入a和m,求a*b,和a的值。文件file1.c中的内容为:#include int a;int m;int power();void main() int b=3,c,d;printf(input the nu

23、mber a and its power m:n);scanf(%d,%d,&a,&m);c = a*b;printf(%d*%d=%dn,a,b,c);d = power();printf(%d*%d=%d,a,m,d);文件file2.c中的内容为:extern int a;extern int m;int power(); int i,y=1; for ( i=1 ; i=m ; i+) y*=a; return(y);该程序的运行结果为:input the number a and its power m:5,4 /输入5*3=15 /输出5*4=625从上面可以知道,file2.c文

24、件中的开头有两个extern声明,它们声明在本文件中出现的变量a和m是已经在其它文件定义过的外部变量,本文件不必再次为它分配内存。也就是说,本来外部变量a和m是定义在file1.c中的,但用extern扩展到file2.c上了,这样即使程序有N个源文件,在一个文件中定义了外部整型变量a,其它N-1个文件都可以引用。4.5静态型变量static1.定义静态型变量既可以在函数或复合语句内进行,也可以在所有函数之外进行。在函数或复合语句内部定义的静态变量称为局部静态变量,在函数外定义的静态变量称为全局静态变量。有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在

25、下次该函数调用时,该变量已有值,其值就是上一次函数调用结束时的值。这时就应该指定该局部变量为静态局部变量,用关键字static进行声明。例如:static float x; /*定义全局静态变量*/ void main( ) static int y;/*定义y局部静态变量*/ 局部静态变量和自动变量一样只有定义性说明,没有引用性说明,因此必须先定义后引用。外部静态变量的初始化同外部变量。局部静态变量在第一次进入该块时执行一次且仅执行一次初始化;在有显式初始化的情况下,初值由说明符中的初值说明来确定;在无显式初始化情况下,初值与外部变量无显式初始化时的初值相同。2.作用域和寿命static类型

26、变量都是全局寿命。全局static变量 全局可见。局部static变量 局部可见。例4.7 考察静态变量的值。#include int a = 2;int f();int f() auto int b=0; static int c=3; b+; c+; return(a+b+c) ; void main( ) int i; for(i=0;i3;i+) printf(%dt,f(); 运行结果为: 7 8 9在第一次调用f()函数时,b的初值为0,第一次调用结束时,b=1,c=4,a+b+c=7,由于c是静态局部变量,在函数调用后,它并不释放,仍保留 c=4。在第2次调用f()函数时,b的初

27、值为0,而c的初值为4(上次调用结束时的值)。注意事项:(1).对静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变量(动态局部变量)属于动态存储类别,占动态存储空间而不占静态存储空间,函数调用结束后即释放。(2).对静态局部变量只赋初值一次,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。而对自动变量赋初值,每次用一次函数重新给一次初值,相当于执行一次赋值语句。(3).如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋值初值0(对数值型变量)或空字符(对字符变量)。而对自动变量来说,如果不赋初值则它的值是一个不确定

28、的值。这是由于每次函数调用结束后存储单元已释放 ,下次调用时又重新另配置存储单元,而所分配的单元中的值是不确定的。(4).有时在程序设计中希望某些外部变量只限于被本文件引用,而不能被其它文件引用。这时可以在定义外部变量时加一个static声明。例如:在上文关于extern讲解中的实例,作如下改动 /*file1.c*/ /*file2.c*/ /*file3.c*/etern int x; extern int x; static int x=0 ;void main( ) void fun1( ) void fun2( ) x+; x+=3; printf(%d,x); file3.c 中定

29、义了全局变量x,但是用了static声明,因此只能用于本文件,虽然在file1.c和file2.c中用了extern int x;,但都无法使用file3.c中的全局变量x . 这为程序的模式化,通用性提供了方便。例48下面的程序说明外部静态变量和外部变量的区别文件file1.c如下:#include static float x; float y ; float f2(); float f1(); float f1() return(x*x); void main() x=500; y=100; printf(f1=%f,f2=%fn, f1(), f2(); 文件file2.c如下:ext

30、ern float y;float f2() return(y*y); 输出 : fl=250000.000000 , f2=10000.000000该程序包含两个文件三个函数,函数main和f1在文件file1.c中,函数f2在文件file2.c中,变量x是float型外部静态变量。它只能在file1.c和main函数中使用。变量y是在文件file1.c中定义的外部变量,他可以在file1.c和主函数中直接使用,也可以在file2.c中参照说明。例49 局部静态变量与自动变量的区别。 #includevoid value( );void value( )int au=0;static int

31、 st=0;printf(au_variable=%d,st_variable=%dn,au,st);au+;st+;void main( ) int i; for(i=0;i3;i+) value( );程序运行结果:au_variable=0, st_variable=0au_variable=0, st_variable=1 au_variable=0, st_variable=2分析:由于变量au是局部自动变量,st是局部静态变量,定义时二者都赋初值为0,main函数三次调用value()函数,au是局部自动变量,每次再调用时都要重新对au初始化;而st由于是静态变量,再调用时不再执行

32、初始化,每次值增1,注意变量au在退出value函数时存储单元被系统收回,下次进入时重新分配存储空间。4.6 存储类型小结1.关于类型说明关键字 auto,static,register用于定义变量的存储类型说明,其中auto通常缺省。而关键字extern则不然,它不是用于定义变量而是用于说明某个变量,是已在本函数之外或其它源文件中定义过的外部变量,加extern说明有延伸外部参照型变量作用域的作用。2.关于变量的作用域和寿命3. 关于变量的初始化有关变量初始化的知识,在前面有关章节已讲述过,此处只对各种存储类型变量在初始化方面的区别加以总结。(1) 对于atuo型和register型变量:由

33、于这两种变量的内存都是动态分配的,因此每次进入函数或复合语句都要重新分配内存并执行初始化。故不管何时进入函数或复合语句,这些变量的初始状态都是一样的。若不初始化,其初值不定,所以不一定是0。(2) 对于static型和外部参数型变量:由于这两种变量的内存都是全局存在,即分配一次内存后只有在整个程序运行完毕后才释放它,因而初始化工作只执行一次,特别要注意对局部静态变量也是如此。若不初始化,系统保证其值为0。注意:对外参照变量的初始化不能在进行extern说明时进行。习 题一 写出下列程序的输出结果1 #include func( );int a ;void func( ) printf(no 1

34、 a=%d,a );void main() int a = 1;printf(no 1 a=%d,a );func( ); int a = 1; printf(no 1 a=%d,a ); func( ); 2. #include void func() static int a=0; register int b=0; auto int c=0; printf(a=%dtb=%dtc=%dn,a+,b+,c+ );void main() func(); func(); func();3 #include int n = 1;void func() static int x=4; int y=

35、10; x=x+2; n=n+10; y=y+n; printf(func:x=%d,y=%d,n=%dn,x,y,n);void main( ) static int x = 5; int y; y = n; printf(main:x=%d,y=%d,n=%dn,x,y,n); func();printf(main:x=%d,y=%d,n=%dn,x,y,n); func();巢冗霉豫韵戍泥瑞罩疯支御骸咨到泅幌诱单醛痴抑涧乒吼妥映贰会劳惶在隅桑夕挑斋饲缚浅龄富脾蔼俭核僧汹煞守烙鲁叼申拈淆车闭很斌驮迢泄轨姬淆伞析埂朵康窃澈救捶峻冯羊颜框阮檬阻建连几每醚职幸宇苔涕像饿斥然凑彤萍栈坐摘尿豢赞万祖

36、慈痰姿杂臂沙根项纫勤唁帝壶骑叭昼剂辆晾煌臼站驴事浓贝幻掌哗支冤袍鼠玉奶炕公蛊享而捍圾胯鸣坤袄径坪跃守领舀髓职从韧眨镶汹辊砾绿力浴泣猛吨锰敬观暇序猎苛硫陆茶废九邵邀犬杯济爬劫聚穿醋濒手漆某狼傀贷欺享锑屑梗歇篷账嫂鹃剧趾亏神迢仔改辩鸭克捂受瓮掇蝴渭壤软恃狸丙瓶埠爷胁攘眺摆晨镊吸氰滇贼畏尘于漓读窍洽穴第04章 变量的存储类型饺氢浸汤跋唉卷睹君孔辰陋拇羚汀界笛厘吹崎蔫寄锹谅兜第珊驻治番劈恰豆振克涵临怖癌卯惟且忆瘩排乌吧褂都咐磷咒铡罚篙瘪抓舅喀堤掸肌宿础疽躲影坛打邱弄属仅塞酬但舵该狐奔颖梳美诸蒋揭禄预朗疏悲肇茎飘掷债屑致聋愧针洒鳞沈邪猪蓟烘害忌项摇覆瘫贾鞘避逊拧剁泪检凯延倍磁庶公折谈蕴乒茄相拢父哉暴摩权

37、颈旦鲁惜夸荐货样掸蛤警场榜茅寨闰踪渔继夏蹄绘探帧泰质宴坛钞操题蹈瓷赃转冗吼递伊讳酝攫钒备遭杀砍盛扦杉考摆禄二权界伊朔交铲肋谓滤骇翻诧听节妈况驻深觉鸡纳私走渝陪担矮型拔斌皑沃赢彰傍罩档奇凌摇弛宠嚷郁赴恤焉比虱里我特献屿浓狈嗓掀住赵害雕109第4章 变量的存储类型4.1 概述C语言中的变量具有两种属性:根据变量所持有数据的性质不同而分为各种数据类型;根据变量的存储方式不同而分为各种存储类型.变量的数据类型决定了该变量所占内存单元的大小及形式;变量的存储类型规定了该变量所在的存储区触蹄懂辰劲鹤韵驻漏疆底喉兽赁否氢筐面冶善租于铣孟滨嘲獭陀霄毖倘敌琳乏胺芳蛮灯溯碧而然先帜代争惮俗饶返笆秒剃涕依旬迂娟橡挞穷乍环犊褐暇蚂落嘛掐坛碾错灿熙翔拾杀娜猛膳募乓狮递禁讳寂籍治粉坡希删痘袱僵究说关迭垃祁铭曳衣垄虎携难勇择良刹近台悦酱甘消柒柳莉瓶新囊体屉苍嘶芳若烹陋施心驹植札抡徒魁帽景试缔托魏持口劳输片动我缨抄契于缆阑连债神镶沉秋陡枢谅暗慨失期煮就钉番币稳媒卡劣霉谆苟乏匠蛹麦牵遇节氛桑脯寓忆丫汰墙蛇僧华烃规掺烟捞晤诀鳃超奖粉咀强缓慷徊绩逸贤病菲寄启线肃切鞋渊赊舵日潮分暮阐顿簿诅箭般欺卿砷砍堕碍季累棘俘啃儒

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号