根据变量的生存时间,C语言的变量可以分为静态变量和动态变量。
静态变量
存储在静态存储区的变量,称为静态变量,在程序整个运行期间都不释放。
一般来说,全局变量存储在静态存储区。加static关键字修饰的变量为静态变量,也存储在静态存储区。
动态变量
存储在动态存储区的变量,称为动态变量。
动态存储区存放的数据有:函数的形参、自动变量(凡是没有声明static存储的局部变量,都为auto 变量)、函数调用的现场保护和返回值。在调用函数中,给函数中的自动变量分配存储空间,而在函数结束的时候,释放该空间。因此,每对函数进行一次调用,都要对自动变量重新赋一个初值。
最后举一个例子:
1 |
|
输出结果为:
1 | 7 8 9 |
在调用f函数时,b为auto变量,每一次调用都需重新赋值;c为静态局部变量,只在第一次调用时赋值,因此后一次调用比前一次调用的结果加1。