欢迎来到天天文库
浏览记录
ID:48243314
大小:95.50 KB
页数:25页
时间:2020-01-18
《第12章 C语言中用户标识符的作用域和存储类.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、全国计算机等级考试教程C语言程序设计(二级)万红波烟台大学第十二章标识符的作用域和存储类#includedoubleaaa=2.3;doubleadd(doublea,doubleb){doubles;s=a+b;aaa=3.5;//??returns;}intmain(intargc,char*argv[]){doubleab=1.0;intaaa;//??aaa=5;//??s=2.1;//??printf("ab=%f,aaa=%d",ab,aaa);return0;}标识符的作用域:标识符可以定义在程序中的不同位置,具有不同
2、的作用范围;变量的生存期:变量的存在期限是不同的;第十二章标识符的作用域和存储类12.1局部变量、全局变量和存储分类12.2局部变量及其作用域和生存期12.3全局变量及其作用域和生存期12.4函数的存储分类12.1局部变量、全局变量和存储分类根据变量定义在程序中出现的位置:局部变量:定义在函数内部(包括形式参数)或者复合语句内部的变量;全局变量:定义在所有函数的外部;12.1局部变量、全局变量和存储分类12.1.2变量的存储分类:决定变量放在什么存储区autointi;staticinti;动态存储区(堆栈)静态存储区程序代码区存储类关键字:auto自动
3、类别register寄存器类别static静态类别extern外部类别动态存储区保存函数调用时的形式参数、函数的返回地址、自动类别的局部变量。静态存储区存放全局变量和静态类别的局部变量。12.1局部变量、全局变量和存储分类变量的定义位置决定了变量是:局部变量全局变量变量的存储类别决定了变量的存储位置动态存储区静态存储区动态存储区静态存储区程序代码区12.2局部变量12.2.1auto变量在函数内部或复合语句内定义的变量,默认就是auto变量;局部auto变量存储单元分配在内存的动态存储区;每当进入函数体或者复合语句时,系统自动为auto变量分配存储单元,
4、并且由程序负责对其赋初值;退出时候自动释放存储单元,变量消失。12.2局部变量12.2.1auto变量的作用域和生存周期voidsub(floata){autointi;a=3;//??if(i>0){intn;//定义在复合语句内部i=9;//??printf("%d",n);}n=23;//??}12.2局部变量12.2.2register变量跟自动变量相同,具有相同的作用域和生存周期建议编译程序将变量保存在CPU的寄存器中intpower(intx,registerintn){registerintp;for(p=1;n;n--)p=p*x;r
5、eturnp;}12.2局部变量及其作用域和生命周期12.2.3静态(static)局部变量1.静态局部变量保存在内存的静态存储区;2.静态局部变量的初值是编译时候赋予的,在程序执行期间不再赋予初值;3.对于未赋初值的静态局部变量,编译器自动赋0;12.2局部变量及其作用域和生命周期12.2.3静态(static)局部变量的作用域和生存周期intfunc(){staticn=0;//定义静态局部变量,并初始化n++;printf("n=%d",n);returnn;}intmain(){inti;for(i=0;i<10;i++)func();}12
6、.3全局变量12.3.1全局变量的作用域和生存期在函数外部定义的变量。全局变量的作用域是从定义开始到源文件结束。全局变量的生存期是整个程序的运行期间。12.3全局变量voidfun1(void);voidfun2(void);intsum;main(){...sum++;test=9;//??}inttest;voidfun2(void){intsum=0;...sum++;test=1;...}12.3全局变量如果全局变量和函数中的局部变量重名,则在该函数中,全局变量被屏蔽。voidfun1(void);voidfun2(void);intsum;fu
7、n(){intsum=9;sum++;//??}12.3全局变量及其作用域和生存期12.3.2同一个编译单位(一个c源程序文件)中使用extern对全局变量进行说明。全局变量的定义;全局变量的说明;voidfun1(void);voidfun2(void);intsum;externinttest;//全局变量的说明main(){...sum++;test=9;//??}inttest;//全局变量的定义voidfun2(void){intsum=0;...sum++;test=1;...}12.3全局变量及其作用域和生存期12.3.2不同的编译单位中使
8、用extern对全局变量进行说明程序可以由多个源文件构成,每个源文件就是一个编译
此文档下载收益归作者所有