吾爱程序员:这里有好玩的游戏和软件
当前位置:首页C语言教程 → 理解 C 中的“register”关键字

理解 C 中的“register”关键字

来源:网络 | 更新时间:2022-01-08 15:50:49
寄存器的访问速度比内存快,因此可以使用register关键字将 C 程序中最常用的变量放入寄存器中。关键字register向编译器提示可以将给定变量放入寄存器中。是否将其放入寄存器是编译器的选择。通常,编译器本身会进行优化并将变量放入寄存器中。 1)如果您将 & 运算符与寄存器变量一起使用,那么编译器可能会给出错误或警告(取决于您使用的编译器),因为当我们说变量是寄存器时,它可能存储在寄存器而不是内存中,并且寄存器的访问地址无效。试试下面的程序。
#include<stdio.h>


int main()
{
register int i = 10;
int* a = &i;
printf("%d", *a);
getchar();
return 0;
}
2) register关键字可以与指针变量一起使用。显然,寄存器可以具有内存位置的地址。下面的程序不会有任何问题。
#include<stdio.h>

int main()
{
int i = 10;
register int* a = &i;
printf("%d", *a);
getchar();
return 0;
}
3) 寄存器是一个存储类,C 不允许一个变量有多个存储类说明符。因此,register不能与static一起使用。试试下面的程序。
#include<stdio.h>

int main()
{
int i = 10;
register static int* a = &i;
printf("%d", *a);
getchar();
return 0;
}
4)寄存器只能在一个块内(本地)使用,不能在全局范围内(main外)使用。
#include <stdio.h>

// error (global scope)
register int x = 10;
int main()
{
// works (inside a block)
register int i = 10;
printf("%dn", i);
printf("%d", x);
return 0;
}
编译错误:
prog.c:3:14: error: register name not specified for 'x'
 register int x = 10;//error (global scope)
              ^
5)C程序中寄存器变量的数量没有限制,但关键是编译器可能会将一些变量放入寄存器中,而有些则不。

最新文章

热点资讯

手游排行榜

CopyRight 2020-2030吾爱程序员

鄂ICP备2021004581号-8

本站资源收集于网络,如有侵权请联系我们:35492删除0109@qq.com