C的存储类型与堆栈段

C的存储类型与堆栈段

理解C的储存类型可以帮助理解JAVA等高级语言

auto存储类型

auto储存类型只对属于块的变量有效。auto具有自动储存期限,默认声明的。

static存储类型

static存储类型可用于全部变量

1. 用于块外部
(1)具有静态储存期限
(2)文件作用域
(3)内部链接
用于声明函数具有相同效果
另外:
声明不打算被其他文件调用的函数是,用static,有两点好处:
(1)更容易维护
修改程序的人可以知道对static函数修改不会影响其他文件
(2)减少了名字空间污染
可以在其他文件中重新使用这些函数的名字
2. 用于块内部
(1)具有静态储存期限
(2)块作用域
(3)无链接

extern存储类型

extern使几个源文件可以共享同一个变量(默认)

extern int i;

这样不会导致编译器为变量i分配存储单元,上述声明不是变量i的定义,它只是提示编译器需要访问定义在别处的变量。

1. 用于块外部
(1)具有静态储存期限
(2)文件作用域
2. 用于块内部
(1)具有静态储存期限
(2)块作用域

register存储类型

要求编译器把变量存储在寄存器中,少用

堆栈段

1.堆:堆是用于存放进程运行中被动态分配的内存段(自行管理)
像对象和C中的malloc等都是自主申请内存,自主管理释放
不可再访问到的内存块被称为垃圾,有垃圾的程序存在内存泄漏
2.栈:用于存放程序的局部变量,除此之外,函数被调用时,其参数也会被压入(内存申请与收回都由OS管理)
3.BBS段:用于存放程序中未初始化的全局变量,BBS段属于静态内存分配,体现为占位符,记录所需空间大小。
4.代码段:存放程序执行代码
5.数据段:存放已初始化的全局变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值