在编程语言中,所有定义的变量都有作用域。
作用域是什么东西呢?
作用域:
变量合法存在且可合法使用的区域;
超过区域,变量就不可使用了,内存被释放掉了;
一天,你们依然在愉快的玩着九宫格游戏,但是你发现了一个问题,随着你写的指令纸条越来越多
你发现,白虎在九宫格的空白区域,不断的代表你所写的变量的格子。
这本没有任何问题,游戏越来越久的运行,九宫格的格子被白虎写得越来越往后,前面很多用不到的变量所代表的格子,似乎一直被荒废在哪里
而且九宫格再大 始终是有限的 于是你在考虑把之前用不上的变量所代表的格子利用起来
新的规则出现了
存写变量的内存 分为几个区域
全局区 栈区 堆区 (静态区,就是全局区划出来的) 还有一个只读存储区( 顾名思义只读存储区 存储的变量是只读的 是不可以写入的 这个比较特殊 一般可以忽略)
全局区:
从一次游戏开始的时候,到游戏结束都合法存在的区域(全游戏过程中都可以使用 该区域划分代表变量的内存)
栈区:
这个是最可以看出作用域的感觉 该区域变量的内存有效 是在 { } (两个左右大括号之间 ) 超出大括号就不可合法使用的内存
堆区:
是一片可以由你自由定义的一片内存,你可以指定,该区域的内存不可使用的时候 该区域的内存从你定义使用时 到你自己释放该内存之前 都可以访问使用
静态区
是一种你在指令流中,在{}之间静态修饰定义的变量 该变量所代表的内存 从声明起,到游戏结束之前都可合法使用
全局区 变量如何定义
很简单 在 {} 大括号外定义的变量都是存放在全局区
注意 变量有效范围 游戏启动到结束之前有效
栈区 变量定义在 {} 大括号内定义的变量都是存放在栈区
注意 变量有效氛范围从定义开始到 } 右大括号 超出失效
堆区 这个是你可以自己定义使用该区域内的内存的大小 使用方式是 使用内存地址 这片区域不是用变量定义别名
注意 内存有效范围 从你定义使用该区域一片或一个内存开始 到 你决定释放这片内存之前都可以使用
内存失效
所谓失效 就是白虎 认为这些失效的内存 变成未使用的内存 之后指令中新定义的变量 白虎考虑从这些未使用的内存中寻找代表内存的大小
简单来说 失效就是变成未使用 可以重新被新变量所使用的内存
变量内存的作用域很重要