在 C 中,指针的使用会取消关联变量的“注册”属性吗?
#include<stdio.h>
#include<stdlib.h>
int main()
{
register int clk=0; //maybe register maybe not
int *adr=&clk; //not a register now? i have its address
*adr=1; //if i use this 1000000 times, does it exist in L1 at least?
printf("%d",clk);
return 0;
}
给出编译器错误“不能获取寄存器变量的地址”,但它不是寄存器 %100。这只是一个机会。
这是最慢的循环吗?
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p;
int i=0;
p=&i;
for(*p=0;(*p)<100;(*p)++)
{
//do nothing
}
printf("%d ",i);
return 0;
}
如果我使用“register”关键字将几乎所有变量都设为指针样式并且只有三个变量只有原始类型,那么编译器是否会使这三个变量“真正注册”的机会更高?
好的。问题解决了。我学习了一些组装,发现这取决于优化级别以及变量的波动性。使用 __asm{} 确保它在寄存器中计算。谢谢。