在C#中是否可以获取变量的内存地址。
我想做的很简单。我想声明 Double 类型的变量, Float、Decimal 并将值 1.1 分配给这些变量中的每一个。那我想 去看看这些值在内存中是如何表示的。我需要获得内存 变量的地址,以便查看它是如何存储在内存中的。一旦我有 内存地址我打算在代码中放置一个断点并使用 Debug -> Windows -> Memory visual studio 中的选项以查看数字如何存储在内存中。
干杯,
最佳答案
是的,在 C# 中可以获得指向存储的原始指针。我建议您阅读 C# 规范的第 18 章,而不是试图在这里解释所有内容,其中详细讨论了这个主题。
但是,如果您想了解各种不同的浮点类型如何存储值,则有比在调试器中查看它们更简单的方法。这些都是有据可查的格式;您可以在维基百科或 msdn 中查找它们,并了解它们在内存中的布局方式。
Decimal 值的二进制表示由 1 位符号、96 位整数和用于除以 96 位整数并指定其中哪一部分是小数的比例因子组成。比例因子隐式为数字 10,提高到 0 到 28 之间的指数。
参见 http://msdn.microsoft.com/en-us/library/system.decimal.aspx了解详情。
double 的二进制表示是一个符号位、11 个指数位(表示从 -1022 到 +1023 的指数)和 52 位尾数(解释为“1”)。其次是 52 位。
参见 http://en.wikipedia.org/wiki/Double_precision或者我关于浮点问题的系列文章:http://blogs.msdn.com/ericlippert/archive/tags/Floating+Point+Arithmetic/default.aspx
float 与 double 相同,只是大小的一半:一个符号位、8 个指数位、23 个尾数位。参见 http://en.wikipedia.org/wiki/Single_precision_floating-point_format了解详情。
关于c# - 变量的内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2590019/