class UnsafePointerArray
{
public struct AStruct
{
public int anInteger;
}
public static void CreatePointerArray()
{
AStruct struct0
= new AStruct
();
AStruct struct1
= new AStruct
();
AStruct struct2
= new AStruct
();
unsafe
{
AStruct
*[] StructPtrs
= new AStruct
*[3];
// load addresses into pointer array
StructPtrs[0] = &struct0;
StructPtrs[1] = &struct1;
StructPtrs[2] = &struct2;
fixed (AStruct** ptrArrayStructPtrs = StructPtrs)
{
for (int i = 0; i < 3; i++)
{
ptrArrayStructPtrs[i]->anInteger = i * 2;
Console.WriteLine ("&struct" + i + " = "
+ String.Format ("{0:x2}", (int) ptrArrayStructPtrs[i]));
Console.WriteLine ("&struct" + i + ".anInteger = "
+ ptrArrayStructPtrs[i]->anInteger + "\n\n");
}
}
}
}
}
//csharp/4153