- 程序的五大存储区:
在一个程序中,划分为全局与静态存储区,代码区,堆,栈,常量存储区。
- 全局与静态存储区:存储的是全局变量或者是静态变量,它的所分配空间较小,大约只有1-2M。
- 代码区:存放的是程序的本身。
- 堆:程序员使用new获得的内存区域。
- 栈:存放局部变量或者函数的参数等数据方便恢复现场,还有静态数组。
- 常量存储区:存放的是常亮,一般不可以修改。
- c语言对静态变量的理解:
- 隐藏与隔离:
全局变量虽然属于静态存储方式,但并不是静态变量。全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,全局变量在各个源文件中都是有效的。
如果我们希望全局变量仅限于在本源文件中使用,在其他源文件中不能引用,也就是说限制其作用域只在定义该变量的源文件内有效,而在同一源程序的其他源文件中不能使用。这时,就可以通过在全局变量之前加上关键字 static 来实现,使全局变量被定义成为一个静态全局变量。这样就可以避免在其他源文件中引起的错误。也就起到了对其他源文件进行隐藏与隔离错误的作用,有利于模块化程序设计。
2.保持一个变量不被释放:
在函数中只有被生命为static的变量才不会在函数结束后被取消,它的值一直存在,下次调用函数时仍可以使用上次使用过的值。另外一般被声明为静态变量时会清除其内存空间以0覆盖。
- c语言的静态数组存放的位置
#include<stdio.h>
int a[2];//存放在栈空间;
static char* b[1];//存放在静态存储区