资源描述:
《大学C语言课程全部PPT汇总-第九章课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章变量存储类型本章节介绍变量存储类型和作用域变量的存储类型局部变量和全局变量变量作用域和生存周期本章内容目的与要求如何定义局部变量和全局变量掌握变量的生存周期变量的存储类型31变量及其作用域和生存周期32说明符extern和static33动态分配内存34(不做要求)第9章变量存储类型变量的存储类型31变量及其作用域和生存周期32说明符extern和static33动态分配内存34(不做要求)第9章变量存储类型9.1变量的存储类型硬盘内存CPU寄存器CPU1.变量的存储类型9.1变量的存储类型1.运行Turboc时,操作系统自动为程序分配
2、内存存储空间,叫做用户存储区;用户存储区(内存)动态存储区静态存储区程序代码区例8.1由键盘输入两个整数,并交换位置。(改)voidswap(intx,inty){intt;t=x;x=y;y=t;printf(“x=%d,y=%d”,x,y);}main(){intx,y;scanf(“%d%d”,&x,&y);printf(“x=%d,y=%d”,x,y);swap(x,y);printf(“x=%d,y=%d”,x,y);}子函数主函数1.变量的存储类型9.1变量的存储类型1.运行Turboc时,操作系统自动为程序分配内存存
3、储空间,叫做用户存储区;用户存储区(内存)动态存储区静态存储区程序代码区9.1变量的存储类型硬盘内存CPU寄存器CPU存储类型1.变量的存储类型9.1变量的存储类型1.定义变量、数组、指针时,完整格式为:存储类型数据类型变量名autointa;staticfloatb;registercharc;硬盘内存CPU寄存器CPUauto(动态存储类型)static(静态存储类型)register(寄存器型)变量的存储类型31变量及其作用域和生存周期32说明符extern和static33动态分配内存34(不做要求)第9章变量存储类型1.局部变量和全
4、局变量9.2变量及其作用域和生存周期局部变量:在部分范围内有效的变量;全局变量:在整个函数范围内都有效的变量;9.2变量及其作用域和生存周期局部变量auto型局部变量存放于内存动态存储区,程序结束自动释放;auto可省略autointa=inta;autochars[8]=chars[8];static型局部变量存放于内存静态存储区,长期占用内存staticb;2.局部变量的有效区域9.2变量及其作用域和生存周期在函数内部定义的变量,仅在此函数范围内有效例1.2由键盘输入一个整数x,显示x的绝对值。main(){intx,y,z;scanf(
5、“%d%d”,&x,&y);z=sum(x,y);printf(“z=%d”,z);}intsum(intn,intm){staticintw;w=m+n;returnw;}主函数子函数x,y,z有效n,n,w有效例1.2由键盘输入一个整数x,显示x的绝对值。main(){intx,y,z;scanf(“%d%d”,&x,&y);z=sum(x,y);printf(“z=%d”,z);}intsum(intx,inty){staticintw;w=x+y;returnw;}主函数子函数x,y,z有效x,y,w有效2.局部变量的有效区域9.2变
6、量及其作用域和生存周期在函数内部定义的变量,仅在此函数范围内有效在复合语句内定义的变量,仅在复合语句内有效求10内偶数和1.main()2.{inti=0,n;3.ints=0;4.while(i<=10)5.{n=i*i;6.s+=n;7.i+=2;}8.printf(“s=%d”,s);9.}改变S局部变量作用域1.main()2.{inti=0,n;3.while(i<=10)4.{ints=0;5.n=i*i;6.s+=n;7.i+=2;}8.printf(“s=%d”,s);9.}S有效in有效2.局部变量的有效区域9.2变
7、量及其作用域和生存周期在函数内部定义的变量,仅在此函数范围内有效在复合语句内定义的变量,仅在复合语句内有效局部变量在哪个{}内定义,就在哪个{}范围内有效例1.2由键盘输入一个整数x,显示x的绝对值。main(){intx,y,z;scanf(“%d%d”,&x,&y);z=sum(x,y);printf(“z=%d”,z);}intsum(intx,inty){staticintw;w=x+y;returnw;}主函数子函数x,y,z有效x,y,w有效求10内偶数和1.main()2.{inti=0,n;3.ints=0;4.while(i
8、<=10)5.{n=i*i;6.s+=n;7.i+=2;}8.printf(“s=%d”,s);9.}改变S局部变量作用域1.main()2.{inti=0,n