寄存器比访问存储器更快,因此可以使用register关键字将C程序中最常用的变量放入寄存器中关键字寄存器向编译器提示可以将给定变量放入寄存器中。将编译器放入寄存器是否是编译器的选择。通常,编译器本身会进行优化并将变量放入寄存器中。

1)如果你使用带有寄存器变量的&运算符,那么编译器可能会给出错误或警告(取决于你使用的编译器),因为当我们说变量是寄存器时,它可能存储在寄存器而不是存储器中访问寄存器的地址无效。尝试以下程序。

int main()
{
  register int i = 10;
  int *a = &i;
  printf("%d", *a);
  getchar();
  return 0;
}

2)register关键字可以与指针变量一起使用。显然,寄存器可以具有存储器位置的地址。以下程序不会有任何问题。

int main()
{
  int i = 10;
  register int *a = &i;
  printf("%d", *a);
  getchar();
  return 0;
}

3)Register是一个存储类,C不允许变量的多个存储类说明符。因此,寄存器不能与静态一起使用。尝试以下程序。

int main()
{
  int i = 10;
  register static int *a = &i;
  printf("%d", *a);
  getchar();
  return 0;
}

4)C程序中寄存器变量的数量没有限制,但关键是编译器可能会将一些变量放入寄存器而一些变量不能。

理解C中的“register”关键字-IDC帮帮忙