1:局部变量
- 写在函数或代码块中的变量, 我们称之为局部变量
- 作用域: 从定义的那一行开始, 一直到遇到大括号或者return
- 存储 : 栈
- 存储在栈中的数据有一个特点, 系统会自动给我们释放
2:成员变量
- 成员变量是存在类中声明的。
- 依类而生,离开类之后就不是成员变量。
- 成员变量只能通过对象访问。
- 存储 :栈中
- 注:成员变量不能在定义的同时不能初始化。
3:全局变量
- 在函数外定义的变量,可为本源文件中其它函数所公用。
- 作用域:从定义变量的位置开始到本源文件结束。
- 存储:静态区域
- 程序一启动就会分配存储空间,直到程序结束才会释放
4:存储作用域
静态存储区:外部变量(全局变量),静态外部变量(全局变量),静态局部变量,静态成员变量
- 栈:局部变量,函数形参,成员变量。
- 静态存储区:主要存放static静态变量,全局变量,常量。这些数据内存在编译的时候就已经为他们分配好了内存,声明周期是整个程序从运行到结束
- 栈区: 存放局部变量。在执行函数的时候(包括main函数)函数内的局部变量的存储单元会在栈上创建,函数执行完自动释放,生命周期从该函数开始执行到结束,线性结构。
- 堆:程序员自己申请的任意大小的内存,一直存在知道被释放。链表结构