C# 结构体数组的指针
已知一个已经初始化的结构体数组MyStruct[]array=newMyStruct[2];array[0].a="abc";array[0].b=2;array[1]....
已知一个已经初始化的结构体数组
MyStruct[] array = new MyStruct[2];
array[0].a = "abc";
array[0].b = 2;
array[1].a = "abcdef";
array[1].b = 12;
需要获取该数组的指针 以IntPtr的形式传给另外一个方法进行调用。
求各位帮忙!感谢! 展开
MyStruct[] array = new MyStruct[2];
array[0].a = "abc";
array[0].b = 2;
array[1].a = "abcdef";
array[1].b = 12;
需要获取该数组的指针 以IntPtr的形式传给另外一个方法进行调用。
求各位帮忙!感谢! 展开
1个回答
展开全部
System.Runtime.InteropServices.Marshal.UnsafeAddrOfPinnedArrayElement(array,0)
直接获得array第0个元素的首字节地址
当然也可以有个变通的方案...不用new来申请数组 用stackalloc
比如 MyStruct* array = stackalloc MyStruct[2];
这样可以直接在栈区申请数组并获得指针(类似C语言的静态数组了...但是要考虑你这个对象的生命周期)
直接获得array第0个元素的首字节地址
当然也可以有个变通的方案...不用new来申请数组 用stackalloc
比如 MyStruct* array = stackalloc MyStruct[2];
这样可以直接在栈区申请数组并获得指针(类似C语言的静态数组了...但是要考虑你这个对象的生命周期)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询