专升本C语言课件C08存储属性及预处理.ppt
《专升本C语言课件C08存储属性及预处理.ppt》由会员分享,可在线阅读,更多相关《专升本C语言课件C08存储属性及预处理.ppt(25页珍藏版)》请在三一办公上搜索。
1、C程序设计八 存储属性及预处理,八 存储属性及预处理 8.1 变量的存储属性8.1.1变量的作用域变量有两个方面的属性:数据类型和存储类别变量的存储属性指:变量的作用域和生存期。作用域有2种:局部变量:在函数内有效(定义在函数内或形式参数)全局变量:从定义点到文件的结尾有效。(定义在函数外,又称外部变量)注意分析作用域时不涉及程序运行的流程。,以下哪些是局部变量,哪些是全局变量?判断划线语句是否正确。float x=6,y;main()int i;i=x;x=j;int j;fun1(int*p)int a;a=i*2;fun2()int b;b=x+j;,对错错对,八 存储属性及预处理 8.
2、1 变量的存储属性全局变量的作用:(1)可以从函数得到多个返回值。(2)简化形参。,下面程序采用全局变量得到多个值int a,b;main().swap();.swap()int c;c=a;a=b;b=c;,八 存储属性及预处理 8.1 变量的存储属性全局变量的作用:(1)可以从函数得到多个返回值。(2)简化形参。,比较如下的两个程序:采用全局变量可以简化形参。main().fun1(a,b,p);fun2(a,b,p,4);.fun1(int a,int b,int*p).fun2(int a,int b,int*p,int n).fun1(a,b,p);.,int a,int b,int
3、*p;main().fun1();fun2(4);.fun1().fun2(int n).fun1();.,八 存储属性及预处理 8.1 变量的存储属性全局变量的作用:(1)可以从函数得到多个返回值。(2)简化形参。全局变量的缺点:使函数的通用性降低。程序容易出错。,以下的swap函数拿到其他程序中不能用。int a,b;main().swap();.swap()int c;c=a;a=b;b=c;,八 存储属性及预处理 8.1 变量的存储属性全局变量与局部变量同名时,全局变量被屏蔽。,float x=6,y;main()int i;i=x;x=j;int j;fun2()int b,x=5;
4、b=x+j;这时的x是局部变量,八 存储属性及预处理 8.1 变量的存储属性全局变量与局部变量同名时,全局变量被屏蔽。,程序分析:int a=1;main()int a=7,b=5;fun(a+b);printf(%d,%dn,a,b);fun(int b)b=a+b;a=a*2;printf(%d,%dn,a,b);,2,127,5,八 存储属性及预处理 8.1 变量的存储属性全局变量与局部变量同名时,全局变量被屏蔽。,程序分析:int a=1;main()int a=7,b=5;while(b100)b=b*fun(+a);printf(%d,%dn,a,b);fun(int b)b=a+
5、b;a=a*2;return(b);,9,495,八 存储属性及预处理 8.1 变量的存储属性8.1.2变量的生存期变量有2种生存期:动态存储:在函数被调用时分配空间,函数结束时释放。动态存储变量定义时,初值是不确定的值。静态存储:在编译时被赋初值是0,在整个程序运行时一直存在。,静态存储main()fun1();fun1()int a;/*a是动态存储的变量*/fun2()static int b;/*a是静态存储的变量*/b是静态变量,则不管函数fun2有没有被调用,变量b都会在程序一开始运行时就被定义好了。并且初值是0,八 存储属性及预处理 8.1 变量的存储属性8.1.2变量的生存期,
6、main()int i;for(i=1;i=10;i+)fun1();fun2();fun1()int a;fun2()static int b;变量a,b分别被分配空间几次?,a 10次b 1次,八 存储属性及预处理 8.1 变量的存储属性各种变量的生存期外部变量:静态局部变量:动态 局部变量(auto)形参 函数调用时分配,并且 被赋予实参的值。register 寄存器变量 速度较快 静态static 静态局部变量 既是局部变量,又是 静态变量,判断题:(1)只要是局部变量都可以定义为寄存器变量。错,静态局部变量不可以。(2)用register定义100变量,其中有些变量将被分配内存单元。
7、对。(3)静态局部变量定义时自动赋初值为0对(4)外部变量不可以用auto说明存储类型。对。(5)外部变量必然是静态存储的变量。对。(6)程序执行到定义静态变量时,该变量被创建,一直到程序结束。错。程序一开始就已创建。,八 存储属性及预处理 8.1 变量的存储属性各种变量的生存期外部变量:静态局部变量:动态 局部变量(auto)形参 函数调用时分配,并且 被赋予实参的值。register 寄存器变量 速度较快 静态static 静态局部变量 既是局部变量,又是 静态变量,外部变量:定义在函数的外部int x;动态局部变量:定义在函数内部auto int x;或者 int x;形参:void a
8、bc(int x,char y)。寄存器变量:定义在函数内部register int x,y,z;静态局部变量:定义在函数内部static int x;,八 存储属性及预处理 8.1 变量的存储属性各种变量的生存期外部变量:静态局部变量:动态 局部变量(auto)形参 函数调用时分配,并且 被赋予实参的值。register 寄存器变量 速度较快 静态static 静态局部变量 既是局部变量,又是 静态变量,以下程序的输出的结果是int x=3;main()int i;for(i=1;ix;i+)incre();incre()static int x=1;x*=x+1;printf(%d,x);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课件 C08 存储 属性 预处理
链接地址:https://www.31ppt.com/p-6542053.html