




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、全国计算机等级考试教程C语言程序设计(二级),万红波 烟台大学,第十二章 标识符的作用域和存储类,#include double aaa=2.3; double add(double a,double b) double s; s=a+b; aaa=3.5;/? return s; int main(int argc, char *argv) double ab=1.0; int aaa;/? aaa=5;/? s=2.1;/? printf(ab=%f,aaa=%dn,ab,aaa); return 0; ,标识符的作用域:标识符可以定义在程序中的不同位置,具有不同的作用范围; 变量的生存期
2、:变量的存在期限是不同的;,第十二章 标识符的作用域和存储类,12.1 局部变量、全局变量和存储分类 12.2 局部变量及其作用域和生存期 12.3 全局变量及其作用域和生存期 12.4 函数的存储分类,12.1 局部变量、全局变量和存储分类,根据变量定义在程序中出现的位置: 局部变量:定义在函数内部(包括形式参数)或者复合语句内部的变量; 全局变量:定义在所有函数的外部;,12.1 局部变量、全局变量和存储分类,12.1.2 变量的存储分类:决定变量放在什么存储区 auto int i; static int i;,动态存储区(堆栈),静态存储区,程序代码区,存储类关键字: auto 自动类
3、别 register 寄存器类别 static 静态类别 extern 外部类别,动态存储区保存函数调用时的形式参数、函数的返回地址、自动类别的局部变量。 静态存储区存放全局变量和静态类别的局部变量。,12.1 局部变量、全局变量和存储分类,变量的定义位置决定了变量是: 局部变量 全局变量 变量的存储类别决定了变量的存储位置 动态存储区 静态存储区,动态存储区,静态存储区,程序代码区,12.2 局部变量,12.2.1 auto变量 在函数内部或复合语句内定义的变量,默认就是auto变量; 局部auto变量存储单元分配在内存的动态存储区; 每当进入函数体或者复合语句时,系统自动为auto变量分配
4、存储单元,并且由程序负责对其赋初值;退出时候自动释放存储单元,变量消失。,12.2 局部变量,12.2.1 auto变量的作用域和生存周期,void sub(float a) auto int i; a=3;/? if(i0) int n;/定义在复合语句内部 i=9;/? printf(%dn,n); n=23;/? ,12.2 局部变量,12.2.2 register变量 跟自动变量相同,具有相同的作用域和生存周期 建议编译程序将变量保存在CPU的寄存器中,int power(int x,register int n) register int p; for(p=1;n;n-) p=p*x
5、; return p; ,12.2 局部变量及其作用域和生命周期,12.2.3 静态(static)局部变量,1. 静态局部变量保存在内存的静态存储区; 2. 静态局部变量的初值是编译时候赋予的,在程序执行期间不再赋予初值; 3. 对于未赋初值的静态局部变量,编译器自动赋0;,12.2 局部变量及其作用域和生命周期,12.2.3 静态(static)局部变量的作用域和生存周期,int func() static n=0;/定义静态局部变量,并初始化 n+; printf(n=%dn,n); return n; int main() int i ; for(i=0;i10;i+) func();
6、 ,12.3 全局变量,12.3.1 全局变量的作用域和生存期 在函数外部定义的变量。 全局变量的作用域是从定义开始到源文件结束。 全局变量的生存期是整个程序的运行期间。,12.3 全局变量,void fun1(void); void fun2(void); int sum; main() . sum+; test=9;/? int test; void fun2(void) int sum=0; . sum+; test=1; . ,12.3 全局变量,如果全局变量和函数中的局部变量重名,则在该函数中,全局变量被屏蔽。,void fun1(void); void fun2(void); in
7、t sum; fun() int sum=9; sum+;/? ,12.3 全局变量及其作用域和生存期,12.3.2 同一个编译单位(一个c源程序文件)中使用extern对全局变量进行说明。 全局变量的定义; 全局变量的说明;,void fun1(void); void fun2(void); int sum; extern int test;/全局变量的说明 main() . sum+; test=9;/? int test;/全局变量的定义 void fun2(void) int sum=0; . sum+; test=1; . ,12.3 全局变量及其作用域和生存期,12.3.2 不同的
8、编译单位中使用extern对全局变量进行说明 程序可以由多个源文件构成,每个源文件就是一个编译单元,12.3 全局变量及其作用域和生存期,/*file1.c*/ int x,y;/全局变量的定义 main() fun1(); fun2(); fun3(); fun1() x=111; ,/*file2.c*/ extern int x;/说明 fun2() x=4;/? fun3() y+;/? ,12.3 全局变量及其作用域和生存期,12.3.4 静态全局变量-只局限在本文件中,避免全局变量的冲突,/*file1.c*/ int x; static int y; main() fun1();
9、 fun2(); fun3(); fun1() x=111; ,/*file2.c*/ extern int x; fun2() printf(%dn,x); fun3() x+; printf(%dn,x); ,12.4 函数的存储分类,函数默认是外部的,可以在其他源文件中调用,/*file1.c*/ extern double fun2();/外部函数说明 extern double fun3(); int x; main() fun1(); fun2(); fun3(); fun1() x=111; ,/*file2.c*/ extern int x; double fun2() pri
10、ntf(%dn,x); double fun3() x+; printf(%dn,x); ,12.4 函数的存储分类,/file1.c #include extern double fun2(); double fun1(); void main() fun1(); fun2(); double fun1() ,/file2.c #include double fun2() printf(fun2n); ,12.4.1 用extern对外部函数进行说明,12.4 函数的存储分类,#include extern double fun2(); double fun1(); void main()
11、fun1(); fun2(); double fun1() ,#include double fun2() printf(fun2n); static double fun3() ,12.4.2 用static对函数进行说明 static函数:只限于本源文件中的其他函数调用该函数,其他源文件中的函数不能调用该函数,防止函数名冲突。,练习题12.5,f(int a) int b=0; static int c=3; a=b+,c+; return(a); main() int a=2,i,k; for(i=0;i2;i+) k=f(a+); printf(%dn,k); ,练习题 12.9,/程序的输出结果? #include int main() int a=3,b=2,c=1; c-=+b; b*=a+c; int b=5,c=12; c/=b*2; a-=c;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 超强脱氧剂项目投资可行性研究分析报告(2024-2030版)
- 中国太阳能蓄电池行业发展监测及投资战略咨询报告
- 安平行业报告
- 萧山区公共场所管理办法
- 蕉城市公益捐赠管理办法
- 蛋糕厂生产管理办法制度
- 衡东县加装电梯管理办法
- 衢江区水库流转管理办法
- 西安市应急物资管理办法
- 规划局项目落位管理办法
- 电动车维修与保养考核试卷
- 隧道突泥涌水应急培训
- 2025-2030中国气象服务行业市场前景趋势及竞争格局与投资研究报告
- 2025年心理咨询师职业伦理心得体会
- 《人工智能通识基础》全套教学课件
- A3报告解析课件
- 2024年煤矿安全规程(修订)
- 外研版六年级上册英语全册教学课件
- 广西壮族自治区南宁市2024-2025学年九年级上学期期末道德与法治试题(含答案)
- 企业迎检工作要点
- 2025年度汽车维修配件股份合作协议4篇
评论
0/150
提交评论