class app {
public int x = 3;
static void Main(string[] args)
{
}
}
可以获取x
变量分配的内存地址吗?
示例可以在C
,C++
,C#
或D
中。
我希望很清楚
提前致谢
答案 0 :(得分:4)
在C和C ++中,这是相当简单的。我将在C ++中给出示例:
struct App
{
int x;
App() : x(3) { }
};
int main()
{
App a;
int * p = &a.x; // address goes here
}
当然没有“变量App::x
”,因为App
只是类型。此类型的每个实例(例如示例中的a
)都带有自己的成员变量集,并且很容易获得指向成员变量的指针。 (对于C中的普通数据结构也是如此。)
请注意,C ++还有另一个相关的功能:成员指针。这允许我们形成不透明值int App::*pm = &App::x
,它本身不指向任何内容,但只携带有关类内App::x
的偏移量的信息,如果你愿意的话。可以将与实例一起使用以获得实际值,例如, a.*pm
。子>
答案 1 :(得分:4)
答案 2 :(得分:1)
跳过D和E. C#和F#(以及其他CLR语言) - 一般来说,任何部分变量都没有固定的地址。可以使用托管调试器(即WinDbg + SOS)来查找任何特定变量的地址,或者使用fixed
以及互操作类。