C语言的变量按作用范围分为:局部变量、全局变量
局部变量作用域仅限于函数内,注意,形参变量是被调函数的局部变量,实参是属于主调函数的局部变量。
全局变量也称为外部变量,作用域是整个程序
全局变量的说明符为extern。在一个函数之前定义的全局变量,在该函数内使用时可不再加以说明。
优缺点分析:1.全局变量可加强函数模块之间的数据联系,但使函数的独立性降低
2.全局变量在程序的全部执行过程中都占用存储单元
C语言的存储空间分为三部分:代码区、静态存储区、动态存储区。
变量的存储方式分为静态存储、动态存储
静态存储变量通常在编译时分定存储单元并一直保持不释放,直至整个程序结束。
动态存储变量使用它时才分配存储单元, 使用完立即释放。
变量存储类型:自动变量(局部变量)(auto)、寄存器变量(register)、外部变量(extern)、静态变量(static)
静态局部变量:static int a;
1.在函数内定义,但不像自动变量调用时存在,退出消失,静态局部变量始终存在
2.作用域与局部变量相同,即只能在函数内使用
3.在编译时赋初值,且只赋值一次;而自动变量在函数调用时赋初值,每调用一次重赋值。若不赋初值,静态局部变量编译时自动赋初值0,局部变量是个不确定的值。
静态全局变量:作用域局限于一个文件,可避免在其他源文件中引起错误。
静态——局部:改变生存期
静态——全局:改变作用域,限制了使用范围
内部函数:static int f(int a)
外部函数:默认方式,在一个文件中调用其他文件中的外部函数时,extern int f(int a);外部函数声明(定义在其他文件中)