C语言的变量类型

时间:2025-05-09 08:37:07

变量类型(static、extern、const关键字)

C语言的变量存储类型有:自动类、寄存器类、静态类和外部类。

1. 局部变量

是指在函数内部说明的变量(有时也称为自动变量),用关键字auto进行说明。 所有的非全局变量都被认为是局部变量,所以auto实际上从来不用。局部变量在函数调用时自动产生,但不会自动初始化, 随函数调用的结束,这个变量也就自动消失了,下次调用此函数时再自动产生,还要重新赋值,退出时又自动消失。

2. 静态变量

是用关键字static声明。根据变量的类型可以分为静态局部变量和静态全程变量。

(1)静态局部变量
它与局部变量的区别在于:在函数退出时,这个变量始终存在,但不能被其它函数使用,当再次进入该函数时,将保存上次的结果。其它与局部变量一样。
(2)静态全局变量
静态全局变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与全局变量的区别是:全局变量可以再说明为外部变量(extern),被其它源文件使用,而静态全局变量却不能再被说明为外部的,即只能被所在的源文件使用。
静态局部变量,在函数体里面定义的,就只能在这个函数用了,同一个源程序中的其他函数也用不了。由于被static修饰的变量总是存在内存的静态区,所以即使这个函数运行结束,这个静态变量的值还是不会被销毁,函数下次使用时仍然能用到这个值。
(3)静态变量生命周期
静态变量在程序运行之前创建,在程序的整个运行期间始终存在,直到程序结束。

3. 外部变量

是用关键字extern声明。为了使变量除了在定义它的源文件中可以使用外,还可以被其它文件使用,就要将全程变量通知每一个程序模块文件,此时可用 extern来说明。

4. 寄存器变量

通常在比较注重在执行速度的情况下使用。其思想是告诉编译程序把该变量放在某个CPU寄存器中。因为数据在寄存器中操作比在内存中快,这样就提高了程序代码的执行速度。寄存器变量的说明是在变量名及类型之前加上关键字register。值得注意的是取地址运算符&不能作用于寄存器变量。