一 静态局部变量
1 存储空间的分配 作用域 生存期
static分配在静态存储区,作用域仅仅限于声明该变量的函数内部。在程序
整个运行期间都不释放,生存期贯穿于程序运行的整个过程。
auto类型分配在栈上,属于动态存储类别,占动态存储区空间,作用域仅仅限于声明该变量的函数内部。函数调用结束后自动释放,生存期不过是在声明该变量的函数内部
2 赋初值时的处理方式
static静态局部变量在编译时赋初值,即只赋初值一次;
auto自动变量赋初值是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句
3、未赋初值时的处理方式
如果在定义局部变量时不赋初值的话:
static静态局部变量,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。
auto自动变量,如果不赋初值则它的值是一个不确定的值。
二 静态外部全局变量
在C语言中static还用来声明静态外部全局变量,那么这个全局变量的作用域就被限制在本文件内部
如果在定义点之前的函数想要调用该变量 则应该在引用之前用关键字extern对该变量作“外部变量声明”。
表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。
如果我们声明的全局变量不想被其他文件访问和使用 ———— 在声明的时候前面加上关键字 static
三 静态外部函数
C语言中函数的默认为全局的,外部文件想要引用可加extern 如果不想被引用可用static 修饰