c语言变量存储属性,C语言变量的存储属性及预编译命令.ppt

C语言变量的存储属性及预编译命令

9.1变量的存储属性 存储位置:主存、寄存器 生存期:永久生存期、动态生存期 永久生存期:为程序执行的整个过程,在该过程中占有固定的存储空间。 动态生存期:只在程序执行的某一段时间内存在。 变量的作用域:局部变量和全局变量 局部变量: 在一个函数内部定义的变量是内部变量,它只在本函数范围内有效, 在复合语句中定义的变量只在本复合语句中有效。 全局变量: 在函数之外定义的变量称外部变量,外部变量是全局变量(全程变量)。它的有效范围为从定义变量的位置开始到本源文件结束 局部变量和全局变量 ——从变量的作用域角度分类 例2. void main ( ) {int x=7 , y=3 ; f( ) ; printf("%d,%d\n" , x , y ); } f( ) { int x=8, y=5 ; if ( x>y ) { int t ; t=x ; x=y ; y= t; } printf ("%d,%d\n" , x , y );} (一)局部变量:形参、函数体中定义的变量 作用范围:某个局部 也称为内部变量,在函数内定义,作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。 1)主函数中定义的变量也只能在主函数中使用,不能在其它函数中使用。同时,主函数中也不能使用其它函数中定义的变量。 2)形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。 例如: int f1(int a) /*函数f1*/ {int b,c; …… } int f2(int x) /*函数f2*/ {int y,z; …… } main() {int m,n; …… } 3)允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。如在前例中,形参和实参的变量名都为m,n,是完全允许的。 例21: main() { int i=2,j=3,k; k=i+j; { int k=8; printf("%d\n",k); } printf("%d\n",k); } 4)在复合语句中也可定义变量,其作用域只在复合语句范围内。例如: main() { int s,a; …… { int b; s=a+b; …… } …… } (二)全局变量:在函数之外定义的变量 作用范围:从定义点到文件结束 也称为外部变量,在函数外部定义的变量,作用域是整个源程序。如果在某个函数中使用后面说明的全局变量,应用说明符extern声明后才能使用,但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。 例如: int a,b; void f1() { …… } float x,y; int fz() { …… } main() { …… } 例22.? int p=1,q=5; float f1 ( a ) int a; { extern c1 ……} f2 ( int k ) {……} char c1,c2; main( ) {……} void f3( ) { double s;} 若同一源文件中、外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。 例24. ?int a=3 , b=5; main ( ) {int a=1000; f( ); printf ("main:%d,%\n" , a , b ) ;} f( ) { printf ("f :%d,%\n" , a , b ) ;} 例25. 外部变量与局部变量同名。 int a=3,b=5; max(int a,int b) {int c; c=a>b?a:b; return(c);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值