C#中的不安全指针/数组表示法

时间:2009-06-22 22:12:35

标签: c# pointers

假设我有:

unsafe {
    byte* start = GetStartLocation();
    int something = start[4];
}

什么是something?内存地址的值从开始向下4个字节?

3 个答案:

答案 0 :(得分:6)

start指向内存位置0x12345678,内存如下所示:

  0x12345678   0x12
  0x12345679   0x34
  0x1234567a   0x56
  0x1234567b   0x78
  0x1234567c   0x9a
  0x1234567d   0xbc

然后something等于0x9a

something类型为int的事实与解释start[4]的方式无关 - 它获取字节4位置的byte值远离{{ 1}}。

答案 1 :(得分:2)

某事物的值是从开始加宽到int类型的偏移量4的字节值。

它等同于以下代码

byte temp = start[4];
int something = temp;

答案 2 :(得分:2)

start[4]将评估为:

*(start + 4)