专升本C语言课件C08存储属性及预处理

专升本C语言课件C08存储属性及预处理

ID:45593770

大小:265.31 KB

页数:25页

时间:2019-11-15

专升本C语言课件C08存储属性及预处理_第1页
专升本C语言课件C08存储属性及预处理_第2页
专升本C语言课件C08存储属性及预处理_第3页
专升本C语言课件C08存储属性及预处理_第4页
专升本C语言课件C08存储属性及预处理_第5页
资源描述:

《专升本C语言课件C08存储属性及预处理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C程序设计八存储属性及预处理八存储属性及预处理8.1变量的存储属性8.1.1变量的作用域变量有两个方面的属性:数据类型和存储类别变量的存储属性指:变量的作用域和生存期。作用域有2种:局部变量:在函数内有效(定义在函数内或形式参数)全局变量:从定义点到文件的结尾有效。(定义在函数外,又称外部变量)注意分析作用域时不涉及程序运行的流程。以下哪些是局部变量,哪些是全局变量?判断划线语句是否正确。floatx=6,y;main(){inti;i=x;x=j;}intj;fun1(int*p){inta;

2、a=i*2;}fun2(){intb;b=x+j;}对错错对八存储属性及预处理8.1变量的存储属性全局变量的作用:(1)可以从函数得到多个返回值。(2)简化形参。下面程序采用全局变量得到多个值inta,b;main(){......swap();......}swap(){intc;c=a;a=b;b=c;}八存储属性及预处理8.1变量的存储属性全局变量的作用:(1)可以从函数得到多个返回值。(2)简化形参。比较如下的两个程序:采用全局变量可以简化形参。main(){......fun1(a,b

3、,p);fun2(a,b,p,4);......}fun1(inta,intb,int*p){.....}fun2(inta,intb,int*p,intn){.......fun1(a,b,p);.....}inta,intb,int*p;main(){......fun1();fun2(4);......}fun1(){.....}fun2(intn){.......fun1();.....}八存储属性及预处理8.1变量的存储属性全局变量的作用:(1)可以从函数得到多个返回值。(2)简化形参

4、。全局变量的缺点:使函数的通用性降低。程序容易出错。以下的swap函数拿到其他程序中不能用。inta,b;main(){......swap();......}swap(){intc;c=a;a=b;b=c;}八存储属性及预处理8.1变量的存储属性全局变量与局部变量同名时,全局变量被屏蔽。floatx=6,y;main(){inti;i=x;x=j;}intj;fun2(){intb,x=5;b=x+j;这时的x是局部变量}八存储属性及预处理8.1变量的存储属性全局变量与局部变量同名时,全局变量

5、被屏蔽。程序分析:inta=1;main(){inta=7,b=5;fun(a+b);printf("%d,%d",a,b);}fun(intb){b=a+b;a=a*2;printf("%d,%d",a,b);}2,127,5八存储属性及预处理8.1变量的存储属性全局变量与局部变量同名时,全局变量被屏蔽。程序分析:inta=1;main(){inta=7,b=5;while(b<100)b=b*fun(++a);printf("%d,%d",a,b);}fun(intb){b=a+

6、b;a=a*2;return(b);}9,495八存储属性及预处理8.1变量的存储属性8.1.2变量的生存期变量有2种生存期:动态存储:在函数被调用时分配空间,函数结束时释放。动态存储变量定义时,初值是不确定的值。静态存储:在编译时被赋初值是0,在整个程序运行时一直存在。静态存储main(){fun1();}fun1(){inta;/*a是动态存储的变量*/}fun2(){staticintb;/*a是静态存储的变量*/}b是静态变量,则不管函数fun2有没有被调用,变量b都会在程序一开始运行时

7、就被定义好了。并且初值是0八存储属性及预处理8.1变量的存储属性8.1.2变量的生存期main(){inti;for(i=1;i<=10;i++){fun1();fun2();}}fun1(){inta;}fun2(){staticintb;}变量a,b分别被分配空间几次?a10次b1次八存储属性及预处理8.1变量的存储属性各种变量的生存期外部变量:静态局部变量:动态局部变量(auto)形参函数调用时分配,并且被赋予实参的值。register寄存器变量速度较快静态static静态局部变量既是局部

8、变量,又是静态变量判断题:(1)只要是局部变量都可以定义为寄存器变量。错,静态局部变量不可以。(2)用register定义100变量,其中有些变量将被分配内存单元。对。(3)静态局部变量定义时自动赋初值为0对(4)外部变量不可以用auto说明存储类型。对。(5)外部变量必然是静态存储的变量。对。(6)程序执行到定义静态变量时,该变量被创建,一直到程序结束。错。程序一开始就已创建。八存储属性及预处理8.1变量的存储属性各种变量的生存期外部变量:静态局部变量:动态局部变量(auto)形参函数调用时分

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。