变量的作用域及存储类型_第1页
变量的作用域及存储类型_第2页
变量的作用域及存储类型_第3页
变量的作用域及存储类型_第4页
变量的作用域及存储类型_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、局部变量与全局变量局部变量与全局变量一、局部变量一、局部变量下列变量是局部变量下列变量是局部变量1.在一个函数内部定义的变量在一个函数内部定义的变量2.函数的形式参数函数的形式参数3.在某个复合语句中定义的变量在某个复合语句中定义的变量说明:说明:1.局部变量只在自己局部范围内有效局部变量只在自己局部范围内有效2.如果局部变量的范围有重叠,则有效范围小的优先如果局部变量的范围有重叠,则有效范围小的优先二、全局变量二、全局变量在函数之外定义的变量(外部变在函数之外定义的变量(外部变量)是全局变量。量)是全局变量。全局变量的有效范围是全局变量的有效范围是从定义的从定义的位置开始到源文件的结束位置开

2、始到源文件的结束在一个函数中,即可以使用本函在一个函数中,即可以使用本函数的局部变量,也可以使用有效数的局部变量,也可以使用有效的全局变量。的全局变量。说明:说明:1.利用全局变量可以在各个函数利用全局变量可以在各个函数间传递数据间传递数据2.尽量少用全局变量尽量少用全局变量3.如果局部变量与全局变量同名如果局部变量与全局变量同名,局部变量优先局部变量优先/*例例 全局变量与局部变量全局变量与局部变量*/#includeint a=3,b=5;int max(int a,int b) int c; c=ab?a:b; return c;void main() int a=8; printf(%

3、dn,max(a,b); 变量的存储类别变量的存储类别一、变量的动态存储与静态存储一、变量的动态存储与静态存储全局变量与局部变量全局变量与局部变量 变量的作用域变量的作用域静态存储变量与动态存储变量静态存储变量与动态存储变量 变量的存储类别,即生存期变量的存储类别,即生存期内存中供用户使用的区域包括内存中供用户使用的区域包括程序区程序区静态存储区:编译时分配空间静态存储区:编译时分配空间动态存储区:执行时分配空间动态存储区:执行时分配空间变量的属性变量的属性变量的类型变量的类型变量的存储类别:变量的存储类别: 自动型:自动型:auto 静态型:静态型:static 寄存器型:寄存器型:regi

4、ster 外部型:外部型:extern二、局部变量的存储类别二、局部变量的存储类别1、自动变量、自动变量 存储在动态存储区,用存储在动态存储区,用auto说明说明 如:如: int func1(int a) auto int b,c=3; 形参形参a,变量,变量b,c都是都是auto型变量型变量 调用该函数时,系统给它们分配空调用该函数时,系统给它们分配空间,调用结束时,自动释放空间间,调用结束时,自动释放空间通常将通常将auto省略省略二、局部变量的存储类别二、局部变量的存储类别2、局部静态变量、局部静态变量 存储在静态存储区,用存储在静态存储区,用static说明说明 说明:说明: 静态局

5、部变量在整个程序的运静态局部变量在整个程序的运行期间都不释放空间行期间都不释放空间 局部静态变量在编译时赋初值局部静态变量在编译时赋初值(仅赋一次)(仅赋一次) 如果在定义时没有赋初值,编如果在定义时没有赋初值,编译时会自动赋初值译时会自动赋初值0 局部静态变量只能在定义它的局部静态变量只能在定义它的函数内使用(它存在,但不能被其函数内使用(它存在,但不能被其他函数引用)他函数引用)例例 :打印打印1到到5的阶乘。的阶乘。#includefloat fac(int n) static float f=1; f=f*n; return f;void main() int j; for(j=1;j

6、=5;j+) printf(%d!=%.0fn, j,fac(j);1!=12!=23!=64!=245!=1201、自动变量、自动变量2、局部静态变量、局部静态变量3、寄存器变量、寄存器变量 存储在寄存器中,用存储在寄存器中,用register说明说明 说明:说明: 计算机中寄存器个数是有限的计算机中寄存器个数是有限的 寄存器变量对寄存器的占用是动态的寄存器变量对寄存器的占用是动态的三、全局变量的存储类别三、全局变量的存储类别1、全局变量都是静态的、全局变量都是静态的2、用、用extern说明一个在其他源文件说明一个在其他源文件中或在其后定义的全局变量中或在其后定义的全局变量3、用、用sta

7、tic说明一个不能在其他源文说明一个不能在其他源文件中引用的全局变量件中引用的全局变量尽量少用全局变量尽量少用全局变量四、存储类别小结四、存储类别小结1、变量的定义方法、变量的定义方法 存储类别存储类别 变量类型变量类型 变量名;变量名;2、变量的划分、变量的划分按作用域:按作用域: 局部变量:自动,静态局部、寄存器变量、形参局部变量:自动,静态局部、寄存器变量、形参 全局变量:全局变量:生存期划分:生存期划分:动态存储:自动变量、寄存器变量、形参动态存储:自动变量、寄存器变量、形参动态存储:静态局部变量、全局变量动态存储:静态局部变量、全局变量存储位置:动态存储区、动态存储区、寄存器存储位置

8、:动态存储区、动态存储区、寄存器程序举例程序举例编写一个函数编写一个函数swap用于交换两个整数的值用于交换两个整数的值如:设如:设a=3,b=4 调用函数调用函数swap后得:后得:a=4,b=3方法一#includevoid swap(int x,int y)int t; t=x;x=y;y=t;void main()int a,b; scanf(%d%d,&a,&b); swap(a,b); printf(%d %dn,a,b);方法二#includeint x,y;void swap(void)int t; t=x;x=y;y=t;void main()scanf(%d%d,&x,&y); swap( ); printf(%d %dn,x,y);方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论