C语言 变量的存储类型

今天 我们来说变量的存储类型

变量的存储类型是指系统为变量分配存储区域的方式。
决定着变量存储空间在哪里分配,和变量的生存期、作用域存在着一定联系。

动态存储

函数调用发生时系统根据函数定义的需要动态为其分配的一个栈区,函数调用结束时释放该区域。

静态存储

系统为变量分配固定存储空间,而且整个运行过程中一直存在,直到程序执行完毕才释放。
在这里插入图片描述
C语言中 变量的存储类型分为4种
自动 (auto) 与 寄存器 (register) 为动态存储方式
静态(static) 与 外部(extern) 为静态存储方式

1.auto 自动变量

自动 体现在进入语句块时自动申请内存,退出时自动释放内存动态局部变量
也是局部变量

auto 变量类型 变量名 = 变量值;
如下案例

auto long p=1;

2.static静态变量

一个函数的内部变量在函数退出后失效。再次进入函数,变量值重新初始化
把此变量定义为static,则变量的值可以保存到下次进入乐数
静态变量和全局变量都是静态存储类型
自动初始化为0
从静态存储区分配,生存期为整个程序运行期间
但作用域不同

静态变量是在函数内定义 作用域也仅限于定义他的函数内
其他还是不能使用它
定义格式如下
static 变量类型 变量名 = 变量值;

static long p=1;

3.register 寄存器变量

在这里插入图片描述
上图中 我们可以看出 离CPU最近的就是寄存器 我们通常存储都在CPU中
我们有些东西 频繁使用 就会导致频繁调用内存 所以会将一些要经常反复使用的变量定义为寄存器变量

使用频率比较高的变量声明为register ,可使程序更小、执行速度更快
定义格式如下

register int i, sum;

现在的编译器 有能力自动的将普通变量 转为寄存器变量 所以 也不用特别关注

4. extern 外部变量

外部变量就是在函数外定义的全局变量
作用域是全局的整个程序运行期间都是可以用的 程序结束 自动释放空间

格式如下

extern int x, y;
  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值