局部变量、全局变量、自动变量、静态变量

变量从变量值存在的空间角度(作用域)可以分为局部变量全局变量,从时间角度(存储器)可以分为静态存储动态存储

局部变量

  • 声明在函数内。
  • 只有在函数运行时才会存在。

全局变量

  • 声明在函数外。
  • 任何函数都可以在任意时刻访问。

自动变量

  • 自动变量是动态存储方式。
  • 一般以数据类型加上变量名的方式定义变量得到的是自动变量(默认 auto 关键字)。
  • 自动变量的生命周期是由函数的生命周期所决定,即函数执行完毕自动变量便销毁。
  • 自动变量包括函数形参和非static局部变量。
- 动态分配存储空间,存储在动态存储区中。
- 只在定义它们的时候才创建,在定义它们的函数返回时系统回收变量所占存储空间。对这些变量存储空间的分配和回收是由系统自动完成的。

静态变量(static 变量)

  • 静态变量是静态存储方式。
  • 定义变量时,在数据类型之前加上 static 得到的便是静态变量。
  • 静态变量的生命周期是由整个程序所决定,即程序执行完毕时静态变量才销毁。因为静态变量储存在静态数据区,而函数是储存在中,函数执行完毕后栈销毁,不会影响到静态变量的值。

总结

1.定义局部变量时没有static,是自动变量;
2.定义局部变量时加static,是静态变量。局部静态变量的初始化语句在第一次进入该block时执行一次,以后再进入不再执行该初始化语句;
3.全局变量是静态变量(无论有没有加static);
4.定义全局变量时加static,是限制它不会被别的文件引用;
5.定义局部自动变量时,若没有初始化,则它的初始值是不确定的;定义静态变量(全局变量、局部静态变量)没有初始化,则其初始值为0.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容