C语言温习笔记之变量的存储类别

1,动态存储方式与静态存储方式

①区别与联系
区别:局部变量与全局变量是从作用域的角度对变量类型的划分,而静态存储方式以及动态存储方式则是从 变量存在的时间,即 生存期角度对变量类型的划分。前者从空间的角度入手,后者从时间的角度入手。
联系:两者相互交织,一起结合来刻画变量的类型。
②定义:
静态存储方式:程序运行期间由系统分配 固定的存储空间的方式。
动态存储方式:程序运行期间根据需要进行 动态的分配存储空间的方式。
③铺垫
用户区分为:程序区、静态存储区、动态存储区。
数据分别存放在静态存储区与动态存储区中。
④大概划分
全局变量全部存放于静态存储区中。
动态存储区中存放着函数形参(在调用时给形参分配存储空间)、自动变量(未加static声明的局部变量)、函数调用时的现场保护与返回地址。
一图以蔽之:

⑤各自特点
静态存储方式:程序开始执行时就在静态存储区中分配存储空间(编译期间),程序执行完毕就释放。在程序执行过程中它们占据固定的存储单元。
动态存储方式:在函数调用开始时分配动态存储空间,函数结束时释放这些空间。这种分配与释放在程序执行的过程中是动态的。

2,干货

这部分知识就杂了。且听我娓娓道来:
C语言中,每一个变量与函数有两个属性: 数据类型(int/long/char/...)与 数据的存储类别。存储类别是数据在内存中的存储方式( 说白了,在我看来就是把作用域与生存期相互交错的复杂生态具体化了,通过其存储类别就能得到其作用域与生存期的状况)。具体有四种:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。详述见图:

3,其他

变量声明与定义的异同:
相同点:广义上说,定义是定义性声明,声明是引用性声明,即,定义和声明都是声明,声明包括了定义。
不同点:狭义上讲,定义是需要分配存储空间的,而声明不需要分配存储空间,仅仅是对作用域的改变。
注意点:使用auto/static/register声明变量时,必须在定义变量的基础上加上这些关键字,不能单独使用,如:
              static int a; // 正确
              int a; static a; // 错误
              只有使用extern可以分开进行声明,拓展作用域。

4,总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值