- 1、本文档共91页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * 数据类型 存储类别:数据在内存中存储的方式(静态和动态),具体包括4种: auto --自动型;register--寄存器型 static --静态型;extern ---外部型 根据变量的存储类别,可以知道变量的作用域和生存期。 生存期:变量在某一时刻存在-------静态变量与动态变量 作用域:变量在某区域内有效-------局部变量与全局变量 每一个变量和函数都有两个属性:数据类型和数据的存储类别 如: int sum; auto int a,b,c; register int i; static float x,y; 7.9.2 局部变量的存储类别 1、自动变量(auto变量) 在调用函数时系统会给变量分配存储空间,在函数调用结束时自动释放这些存储空间,这类局部变量称为自动变量 自动变量用关键字auto作存储类别的声明。 关键字“auto”可以省略,auto不写则隐含确定为“自动存储类别”,它属于动态存储方式。 程序中大多数变量属于自动变量。 之前函数中定义变量都没有声明为auto,则都 隐含指定为自动变量。 int f (int a) { auto int b,c=3; ….. } /*定义f函数,a为形参*/ /*定义b,c为自动变量*/ auto int b,c=3; int b,c=3; 例 auto 变量的作用域 main()/*8-19.c*/ { void prt(void); int x=1; printf(“\n”); { int x=3; prt(); printf(“2nd x=%d\n”,x); } printf(“1st x=%d\n”,x); } void prt(void) { int x=5; printf(“3th x=%d\n”,x); } 运行结果: 3th x=5 2nd x=3 1st x=1 x=1作用域 x=1作用域 x=3作用域 x=5作用域 2、静态局部变量(static局部变量) 静态局部变量:函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。 静态局部变量用static进行声明。 #include stdio.h void main()/*8-20.c*/ { int f(int a); int a=2,i; for(i=0;i3;i++) printf(“%d ”,f(a)); } int f(int a) { auto int b=0; static int c=3; b=b+1; c=c+1; return(a+b+c); } 运行结果: 7 8 9 #include stdio.h void main()/*8-20.c*/ { int f(int a); int a=2,i; for(i=0;i3;i++) printf(“%d ”,f(a)); } int f(int a) { auto int b=0; static int c=3; b=b+1; c=c+1; return(a+b+c); } 说明: 静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。自动变量属于动态存储类别,占动态存储区空间,函数调用结束后即释放。 对静态局部变量是在编译时赋初值的,即只赋初值一次,以后每次调用时都不再重新赋初值,而只是保留上次函数调用结束时的值。对自动变量赋初值,是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句 若在定义局部变量时不赋初值,则对静态局部变量来说,编译时自动赋初值0(整型变量)。而对自动变量来说,如果不赋初值则它的值是不确定的值 静态局部变量在函数调用结束后仍然存在,但其它函数不能引用它 #include stdio.h/*8-21.c*/ void main() { int fac(int n); int i; for(i=1;i=5;i++) printf(“%d!=%d\n”,i,fac(i)); } int fac(int n) { sta
您可能关注的文档
- (1.5)第五节极限运算法则(少学时简约型)分解.ppt
- (4十45第1.1节)陈大伟讲稿--观课议课:教研的实效与教研新文化的建设分解.ppt
- (9讲)-阅读解题技巧分解.ppt
- (11-1)海事中的人的因素-序言分解.ppt
- (14工)第六章统计物理学基础分解.ppt
- 2017高考历史一轮复习资本主义世界市场的形成和发展第1讲新航路的开辟、殖民扩张和世界市场的拓展分解.ppt
- (2015年春)语文版八年级语文下册:20邹忌讽齐王纳谏分解.ppt
- (2016版自考)公共部门人力资源开发与管理(孙柏瑛主编第四版教材)分解.ppt
- 2017高考历史一轮复习资本主义世界市场的形成和发展第19讲新航路的开辟与荷兰、英国等国的殖民扩张分解.ppt
- (2016年最新)近三年高考政治新课标全国卷考点分解.ppt
最近下载
- 悬挑支模架专项施工方案(范例).docx VIP
- QY130K7C汽车起重机技术规格书-tdm-D2-20240708_20240713085532.pdf
- 2024年河南省驻马店市小升初数学高频考点检测卷含解析.doc VIP
- Module4 Planes,ships and trains.期末模块复习课件-外研版八年级上册.pptx VIP
- 电伴热带说明书.docx
- JGT491-2016 建筑用网格式金属电缆桥架.docx
- 蓝色点线背景的大数据云计算PPT模板.pptx VIP
- 第28课 初识人工智能 教案 义务教育人教版信息科技三年级全一册.pdf
- 江苏省各地市2023年中考物理试题【10套】(附真题答案).docx VIP
- 溴酸镉安全技术说明书 CAS No 14518-94-6.pdf VIP
文档评论(0)