C语言变量存储类型register用法注意事项

文章讲述了寄存器变量的概念,强调它们用于提高频繁访问变量的效率。寄存器变量主要应用于局部变量和形式参数,但实际是否分配寄存器由编译器决定。尽管可以尝试用register关键字指定,但编译器可能仍将其存储在栈上。高效的编译器能自动识别并优化循环控制变量的存储位置。

一般情况下 , 变量的值是存储在内存中的 , CPU 每次使用数据都要从内存中读取 。 如果有一些变量使用非常频
繁 , 从内存中读取就会消耗很多时间 , 例如 for 循环中的增量控制 :

关于寄存器变量有以下需要注意
1 ) 为寄存器变量分配寄是动态完成的 , 因此 , 只有局部变量和形式参数才能定义为寄存器变量 。
2 ) 局部静态变量不能定义为寄存器变量 , 因为一个变量只能声明为一种存储类别 。static和register不能一起用。
3 ) 寄存器的长度一般和机器的字长一致 , 只有较短的类型如 int 、 char 、 short等才适合定义为寄存器变量 , 诸
如 double 等较大的类型 , 不推荐将其定义为寄存器类型 。
4 ) CPU 的寄存器数目有限 , 即使定义了寄存器变量 , 编译器可能并不真正为其分配寄存器 , 而是将其当做普通
的 auto 变量来对待 , 为其分配栈内存 。 当然 , 有些优秀的编译器 , 能自动识别使用频繁的变量 , 如循环控制变
量等 , 在有可用的寄存器时 , 即使没有使用 register 关键字 , 也自动为其分配寄存器 , 无须由程序员来指定 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值