C语言 变量的存储类型

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

变量的存储类型是指系统为变量分配存储区域的方式。

决定着变量存储空间在哪里分配,和变量的生存期、作用域存在着一定联系。

动态存储

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

静态存储

系统为变量分配固定存储空间,而且整个运行过程中一直存在,直到程序执行完毕才释放。

C语言中 变量的存储类型分为4种

自动 (auto) 与 寄存器 (register) 为动态存储方式

静态(static) 与 外部(extern) 为静态存储方式

1.auto 自动变量

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

也是局部变量

auto 变量类型 变量名 = 变量值;

如下案例

c 复制代码
auto long p=1;

2.static静态变量

一个函数的内部变量在函数退出后失效。再次进入函数,变量值重新初始化

把此变量定义为static,则变量的值可以保存到下次进入乐数

静态变量和全局变量都是静态存储类型

自动初始化为0

从静态存储区分配,生存期为整个程序运行期间

但作用域不同

静态变量是在函数内定义 作用域也仅限于定义他的函数内

其他还是不能使用它

定义格式如下

static 变量类型 变量名 = 变量值;

c 复制代码
static long p=1;

3.register 寄存器变量

上图中 我们可以看出 离CPU最近的就是寄存器 我们通常存储都在CPU中

我们有些东西 频繁使用 就会导致频繁调用内存 所以会将一些要经常反复使用的变量定义为寄存器变量

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

定义格式如下

c 复制代码
register int i, sum;

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

4. extern 外部变量

外部变量就是在函数外定义的全局变量

作用域是全局的整个程序运行期间都是可以用的 程序结束 自动释放空间

格式如下

c 复制代码
extern int x, y;
相关推荐
WWJA王文举5 小时前
I²C通信完整流程详解:START、地址、ACK、数据、Repeated START和STOP一次讲透
c语言·开发语言
zhanghaha13146 小时前
Python进阶教程:6_JSON 数据解析 —— 新手完全指南
开发语言·python·json
qq_448011167 小时前
C语言中的动态内存分配
c语言·开发语言·php
动词ing8 小时前
【学习笔记】C语言(数组指针与指针数组+字符数组+函数+参数传递+字符串作为形参+递归函数+指针函数+回调函数+结构体嵌套+内存动态分配函数)
c语言·笔记·学习
汉字萌萌哒8 小时前
2024CSP-J入门级C++真题详解
开发语言·c++
arbboter8 小时前
【网络工具】NetProxy网络代理用户手册
开发语言·网络·c#·网络代理·网络异常·代理工具
汉字萌萌哒9 小时前
2019CCF-CSP入门级C++试题解析
java·开发语言·c++
叠层归一研究院9 小时前
AGI 系统(十一):二阶网络 — 二阶递归 × 多主体 (元符号网络)
开发语言·人工智能·算法·php·agi
小雨笙笙9 小时前
C语言:变量三属性——存储类型
c语言·开发语言
果果燕10 小时前
C++ 学习笔记(二):类与对象—— 构造函数与析构函数
开发语言·c++