char c = 'A'; char* pc = &c; void* pv = pc; int* pi = (int*)pv; int i = *pi; // undefined *pi = 123456; // undefinedend example] Paragraph 61 When a pointer type is converted to a pointer to byte, the result points to the lowest addressed byte of the variable. 2 Successive increments of the result, up to the size of the variable, yield pointers to the remaining bytes of that variable. [Example: For example, the following method displays each of the eight bytes in a double as a hexadecimal value:
using System; class Test { static void Main() { double d = 123.456e23; unsafe { byte* pb = (byte*)&d; for (int i = 0; i < sizeof(double); ++i) Console.Write(" {0,2:X}", (uint)(*pb++)); Console.WriteLine(); } } }Of course, the output produced depends on endianness. end example] Paragraph 71 Mappings between pointers and integers are implementation-defined. [Note: However, on 32-and 64-bit CPU architectures with a linear address space, conversions of pointers to or from integral types typically behave exactly like conversions of uint or ulong values, respectively, to or from those integral types. end note]
| |
Jagger Software Ltd | |
Company # 4070126 | |
VAT # 762 5213 42 |