理解C语言变量, auto register关键字
1.C总结与剖析:关键字篇 (万字长文)2.对C语言符号的一些冷门知识运用的剖析和总结 (万字)3.位段 -- 内存布局详解-浅谈C语言4.数组降维、函数栈帧、地址空间、可变参数原理剖析 (万字)5.C语言预处理过程中语法的实用方法与技巧 (万字)6.分析负数取模与取余的规则7.四类取整方式8.条件编译 - 代码裁剪的工具
9.理解C语言变量, auto register关键字
10.循环语句与条件语句的细节与思想11.宏定义与特别运用12.浮点数与"零值"的比较13.反汇编分析赋值与自增自减14.聊聊typedef15.聊聊位运算一些注意事项16.C语言类型与强制类型转换17.标准预处理指令 可变参数 #与## 的基本用法目录
变量
程序的本质:二进制文件
运行程序,即将程序中的数据加载到内存中运行
为什么要加载到内存? 1.冯诺依曼体系决定 2.快
1.变量:内存上的某个位置开辟的空间
因为变量都是程序运行起来才开辟的
2.变量的初始化:
变量的空间被开辟后,就应当具有对应的数据,即必须要初始化.表示该变量与生俱来的属性就是该初始值
3.为什么要有变量
计算机是为了解决人计算能力不足的问题而诞生的.即,计算机是为了计算的.
而计算,就需要数据
而要计算,任何时刻,不是所有的数据都要立马被计算,因此有的数据需要暂时被保存起来,等待后续处理. 所以需要变量
4.局部变量与全局变量
- 局部变量:包含在代码块中的变量叫做局部变量.局部变量具有临时性.进入代码块,自动形成局部变量,退出代码块自动释放. 局部变量在栈区保存
- 全局变量:在所有函数外定义的变量,叫做全局变量.全局变量具有全局性.全局变量在全局已初始化数据区保存.
- 代码块:用花括号{}括起来的区域,就叫做代码块.
5.变量的大小由类型决定
6.任何一个变量,内存赋值都是从低地址开始往高地址
所以首地址和取地址永远都是低地址
1.1 关键字auto
默认情况下,编译器默认所有的局部变量都是auto的,auto一般只能用来修饰局部变量,不能修饰全局变量.ju'bu也叫自动变量.一般情况下都是省略auto关键字的.基本永不使用
1.2 关键字register
建议性关键字,建议编译器将该变量优化到寄存器上,具体情况由编译器决定
(不建议大量使用,因为寄存器数量有限)
什么样的变量可以采用register?
- 局部的(全局会导致CPU寄存器被长时间占用)
- 高频被读取的(提高访问效率)
- 不会被写入的(写入就需要写回内存,后续还需要读取检测的话,register就没有意义了)
寄存器变量是不能被取地址的,因为不在内存中,就没有内存地址
register不会影响变量的生命周期,只有static会影响变量的生命周期
本文来自博客园,作者:HJfjfK,原文链接:https://www.cnblogs.com/DSCL-ing/p/18414568
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· c# 半导体/led行业 晶圆片WaferMap实现 map图实现入门篇
· 易语言 —— 开山篇