在C语言中,根据变量的存储方式,可以分为静态存储与动态变量。
静态存储区的静态变量在程序整个运行期间内都不是放空间,自动类型的局部变量属于动态存储类型,在动态存储区内分配内存,函数调用结束后,内存单元被释放。
静态变量只需要有一次赋值即可,下次使用时就是上次使用后的值。
动态变量不同,每次使用都需要赋值。
1.使用auto声明的自动变量
自动变量属于局部变量,它的生命周期在函数被调用时产生,当一个函数被调用时,为局部变量分配内存空间,当这个函数执行完毕时,释放内存空间,生命周期结束。局部变量常用auto来声明,auto可以省略。
2.使用static声明的静态变量:
在C语言中,有时候调用函数某个局部变量后,当该函数执行完,不想让该变量的内存被释放掉,需要让该变量的值不消失,并且保持不变,在下次该函数被调用时,变量中的值可以上i用,这种变量类型为静态变量,使用static来声明。
使用static生病的外部变量,称为静态全局变量或静态外部变量;使用static声明的内部变量称为静态局部变量或静态内部变量。
虽然静态局部变量在函数调用结束后是不被释放的,但它只能在所在的函数中使用,不能被其它函数使用。
3.extern声明的外部变量
外部变量又称全局变量,是在函数的外部定义的变量,其作用域从变量的定义处开始,到本程序文件的结尾处。外部变量可以被作用域中的其他函数调用。
文件之间的外部变量的使用方法:
假设存在两个文件f1与f2,。在f1中定义一个外部变量 int a;
在文件2中如果想使用的话,就需要用extern先声明下,即extern int a;然后再使用。