background image

   auto int y;
   y=x++;
   if(y==5)
   {
     int  x=2;
     printf("x=%d\n",x);
   }
  printf("x=%d\n",x);
  return 0;
}

7.3 static 存储类型的变量与作用范围

静态变量可分为内部静态变量和外部静态变量。

格式:static 

  

数据类型 变量名(=初始化常数表达式);

内部静态变量是指定义在函数内,只在本函数内有效。外部静态变量是指定义在
函数外,限定在本文件内有效。

在整个程序运行期间,静态变量在内存的静态存储区中占据着永久性的存储单元。
即使退出函数以后,下次再进入该函数时,静态局部变量仍使用原来的存储单元,
从而可以继续使用存储单元中原来的值。

对未赋初值的静态局部变量,C 编译程序自动给它赋初值 0。

例 7.3 应用内部静态变量的例子。

编辑源程序代码7-3.c

#include<stdio.h>                 

int   kk(  )                      
{  

int  x = 4 ;                    

    static  int  y = 5 ;           
    x*= 2 ;                        
    y*= 2;                        
   return  (x+y);
}
int main(  )
{  

int  j , s = 0 ;

  for ( j = 0 ; j < 2 ; j ++  )
     s = kk(  );
  printf( " s = %d\n" ,s );
  return 0;
 }