register关键字

register关键字

1
2
3
4
5
6
7
8
9
10
int main()
{
register int val = 100;
//寄存器变量没有地址,不能取地址
val = 200; //可以被写入
printf("%d\n", val);
// 在gcc编译器下 也不允许取地址
return 0;
}
//由于使用register关键字,直接将val存在寄存器内,因此val没有内存地址,因此不能进行取地址操作。
  1. 我们通常采用局部变量采用 register 的,全局变量会导致 CPU 当中的寄存器被长时间占用。
  2. 一个变量被存放到寄存器当中,那么这个变量的效率就会大大的提高,因为不用访存读取
  3. register关键字可以与指针变量一起使用。
  4. 寄存器是一个存储类,并且C不允许变量使用多个存储类说明符。因此,register不能与static一起使用。
  5. 寄存器只能在一个块内使用(局部),而不能在全局范围内(在主外部)使用
  6. 寄存器数量有限

参考资料

【C语言】register 关键字_11月月更_謓泽_InfoQ写作社区

一步带您了解C语言中的“register”关键字 - 知乎 (zhihu.com)

C语言关键字之auto register详解_C 语言_AB教程网 (ab62.cn)


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!