c语言关键字之register

  register关键字请求编译器尽可能地将变量存在CPU内部寄存器中,而不是通过内存寻址访问以提高效率。
  使用register修饰符有几点限制:
  (1)因为register变量可能不存放在内存中,所以不能用“&”来获取register变量的地址。

void main()
{
	register int a = 0;
	int *p = &a;  //错误
}

  (2)只有局部自动变量和形式参数可以作为寄存器变量,其它(如全局变量、结构体、共用体内部变量)不行。特别地,静态局部变量不能定义为寄存器变量。

struct _STRUCT_NAME_
{
	register int a;	//错误
};

union _UNION_NAME_
{
	register int b;	//错误
};

register int c; //错误

void main()
{
	register static int d = 0; //错误
}

  (3)由于寄存器的数量有限,不能定义任意多个寄存器变量,任何多余的register修饰符都将被编译程序所忽略。
参考博文:浅析C语言的一个关键字——register

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值