局部变量、全局变量和静态变量的关系。
2015-09-17 16:14
267 查看
这里简单的说下局部变量和全局变量和静态变量的关系。
首先,全局变量存储在静态存储区;
局部变量存储在动态存储区,是存储在栈里的;
静态变量 类型说明符是static。
静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放)。静态变量虽在程序的整个执行过程中始终存在,但是在它作用域之外不能使用。
另外,属于静态存储方式的量不一定就是静态变量。 例如:外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。
所有的全局变量都是静态变量,而局部变量只有定义时加上类型修饰符static,才为局部静态变量。
静态变量可以在任何可以申请的地方申请,一旦申请成功后,它将不再接受其他的同样申请。
静态变量并不是说其就不能改变值,不能改变值的量叫常量。 其拥有的值是可变的 ,而且它会保持最新的值。说其静态,是因为它不会随着函数的调用和退出而发生变化。即上次调用函数的时候,如果我们给静态变量赋予某个值的话,下次函数调用时,这个值保持不变。
此外,
首先,全局变量存储在静态存储区;
局部变量存储在动态存储区,是存储在栈里的;
静态变量 类型说明符是static。
静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放)。静态变量虽在程序的整个执行过程中始终存在,但是在它作用域之外不能使用。
另外,属于静态存储方式的量不一定就是静态变量。 例如:外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。
所有的全局变量都是静态变量,而局部变量只有定义时加上类型修饰符static,才为局部静态变量。
静态变量可以在任何可以申请的地方申请,一旦申请成功后,它将不再接受其他的同样申请。
静态变量并不是说其就不能改变值,不能改变值的量叫常量。 其拥有的值是可变的 ,而且它会保持最新的值。说其静态,是因为它不会随着函数的调用和退出而发生变化。即上次调用函数的时候,如果我们给静态变量赋予某个值的话,下次函数调用时,这个值保持不变。
此外,
new,malloc分配的内存存储在堆里
相关文章推荐
- static & Class method
- getParameter 与 getAttribute的区别
- ubuntu 输入时弹出剪切板候选项
- 简单的验证码识别(通过颜色)
- Struts 2 mapping interceptors to action
- Dev-C++制作dll文件供Visual Basic调用程序
- URAL 1980 Road to Investor (二分 + SPFA)
- LeetCode 4 Median of Two Sorted Arrays
- jquery.chosen.js实现模糊搜索
- ASP.NET - TreeView 增删
- ubuntu 下解压命令
- 使用PHP制作主机宕机检测,并发送Mail通知
- 【设计模式】-工厂方法模式-Factory Method
- FidderCore
- delphi:with do用法
- poj 1149 PIGS(网络流 BFS 标号法)(困难)
- 数一数你连听都没听过的古典小说有多少?
- Kafka深度解析,众人推荐,精彩好文!
- Centos7.1防火墙开放端口
- 阿汤哥的四条领导力经验