变量及作用域
自动变量 auto修饰,auto可省略
函数中的形参、函数中定义的变量、复合语句中定义的变量,都是自动变量。
全局变量在函数外面定义的变量
可被每个函数使用 作用域:程序级或文件级
存放在静态存储区
默认初始值为0,可专门初始化
局部变量 在函数内部定义的变量或函数参数
只能在函数内部使用 作用域:函数级或块级
存放在动态存储区,运行时分配空间,结束时释放空间
必须初始化
可与全局变量同名,此时全局变量在函数中不再起作用
静态局部变量 static+局部变量
函数内部使用
静态存储区 一经定义不会再分配存储空间,也不会自动消失,同全局变量
初始值为0,同全局变量
寄存器变量 register+局部变量
为提高程序执行效率,可将局部变量的值存放到CPU的寄存器中。
外部变量 extern+全局变量
全局变量是在函数的外部定义的,其作用域从变量的定义处开始,到本程序结束终止。
使用extern来声明全局变量,可以扩展全局变量的作用域至多个程序中。
静态外部变量(静态全局变量) static+全局变量
外部变量只限于本文件引用,而不能被其他文件引用
优点:许多程序员分工协作开发项目时,为了避免使用了相同的全局变量而影响到程序的正确性,可以定义成静态全局变量。
内部函数(静态函数):
在定义它的文件中可以被调用的函数,而在同一程序的其他文件中不可调用。static <类型说明> <函数名>(<形参表>)
外部函数
是一种作用域在整个程序中的函数,包含组成该程序的若干个文件。格式为:
[extern] <类型说明><函数名>(<形参表>)