【发布时间】:2019-12-23 06:53:54
【问题描述】:
我刚刚浏览了 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-member-access-operator 上的 C# 指针描述并遇到了这个示例:
unsafe
{
char letter = 'A';
char* pointerToLetter = &letter;
Console.WriteLine($"Value of the `letter` variable: {letter}");
// Look at the end of the following statement
Console.WriteLine($"Address of the `letter` variable: {(long)pointerToLetter:X}");
*pointerToLetter = 'Z';
Console.WriteLine($"Value of the `letter` variable after update: {letter}");
}
// Output is similar to:
// Value of the `letter` variable: A
// Address of the `letter` variable: DCB977DDF4
// Value of the `letter` variable after update: Z
下面语句中的X是做什么的?
Console.WriteLine($"Address of the `letter` variable: {(long)pointerToLetter:X}");
为什么不直接
Console.WriteLine($"Address of the `letter` variable: {(long)pointerToLetter}");
【问题讨论】:
-
大写十六进制格式说明符:docs.microsoft.com/en-us/dotnet/standard/base-types/… 地址以十六进制显示时更有用。例如,您可以一目了然地看到基于低位的内存对齐情况。
标签: c# .net pointers console-application unmanaged