变量作用域和生存期

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);外部函数声明(定义在其他文件中)

原文地址:https://www.cnblogs.com/Xilian/p/3729153.html