众所周知,使用寄存器存储类声明的变量的地址不能被取走。所以我尝试使用 register 关键字创建一个数组并尝试访问该元素。但我注意到编译器没有引发任何错误。
#include <stdio.h>
void main()
{
register int x[]={3,4};
printf("%d\n",x[0]); // compiled successfully
// printf("%d",&x[0]);// compiler raises an error
}
众所周知,编译器会将表达式 x[0] 转换为 *(x+0),其中 x 表示基地址。但是,既然数组是用寄存器存储类声明的,怎么可能得到数组的基地址呢?
提前致谢..