现在的位置: 首页 > 算法 > 正文

静态变量和动态变量有什么区别

2020年01月02日 算法 ⁄ 共 620字 ⁄ 字号 评论关闭

  定义或者声明变量时,没有static修饰符的就是动态变量,有static修饰符的就是静态变量

  静态变量

  就是在定义的时候,有static修饰的变量,形式为:

  static TYPE var_name = init_value;

  动态变量,形式为:

  TYPE var_name = init_value;

  即没有static 修饰。其中的=init_value均可省略。

  区分定义在函数外的全局变量,和函数内的局部变量,作用域,生命周期,及无显式初始化时的初始值,均有区别。

  1、动态全局变量:

  作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量。

  生命周期为从程序运行到程序退出,即贯穿整个运行时间。

  无显式初始化时默认初始化值为0。

  2、静态全局变量:

  作用域为当前文件,从定义/声明位置到文件结尾。

  生命周期为从程序运行到程序退出,即贯穿整个运行时间。

  无显式初始化时默认初始化值为0。

  3、动态局部变量:

  作用域为当前函数,从定义位置,到其所在的{}的结束位置。

  生命周期为从函数调用到函数退出。

  无显式初始化时默认初始化值为随机值。

  4、静态局部变量:

  作用域为当前函数,从定义位置,到其所在的{}的结束位置。

  生命周期为从程序运行到程序退出,即贯穿整个运行时间,当下次函数调用时,静态局部变量不会被再次初始化,而是沿用上次函数退出时的值。

  无显式初始化时默认初始化值为0。

抱歉!评论已关闭.