【发布时间】:2013-05-14 14:01:32
【问题描述】:
如果在我的代码中的某个地方,我使用了变量的地址(例如,将其传递给其他函数),编译器会自动选择将其存储在内存中吗? (与将其存储在寄存器中的可能性相反)。
否则,如果我要求这样的变量的地址(存储为寄存器)会发生什么?我知道我们不能将变量的地址显式设置为寄存器 (register int c)。
编辑:
例如,如果我做类似的事情
int c = 1;
print("Address of c: %p", &c);
那么这个变量不能存储在寄存器中,是吗?编译器会自动将其设置为存储在内存中吗?否则(如果它只是存储在寄存器中),屏幕上显示的地址是什么?
【问题讨论】:
-
我不清楚你在问什么。如果您在谈论函数参数,那么它们都是通过堆栈处理的。
-
一些调用约定使用堆栈其他使用寄存器,或两者的组合。它们并非全部由堆栈处理,除非您使用特定编译器讨论特定架构上的特定调用约定。
-
我的意思是在一般意义上使用变量的地址。例如,我可以将地址打印到屏幕上。
-
同时添加“volatile”。
标签: c