C#结构体中指针赋值问题

在C#里定义了一个结构体
public struct StrTest
{
public unsafe float* X; 
}
现在我又定义了一个数组float[] a = new float[10]{1,2,3,4,5,6,7,8,9,0}
请问要如何把这个数组赋值给结构体里的指针
不行啊 提示
Cannot implicitly convert type 'float[]' to 'float*'

斯蒂芬大帝
浏览 1409回答 3
3回答

holdtom

float[] a = new float[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };StrTest s=new StrTest();unsafe{fixed (float* f = a){s.X = f;}}

有只小跳蛙

很久没玩指针了,写起来有点困难,但还是实现了://必须声明unsafe.unsafe{float* pFloats = stackalloc float[10];pFloats[0] = 1;pFloats[1] = 2;pFloats[2] = 3;pFloats[3] = 4;pFloats[4] = 5;pFloats[5] = 6;pFloats[6] = 7;pFloats[7] = 8;pFloats[8] = 9;pFloats[9] = 10;StrTest st;st.X = pFloats;for (int i = 0; i < 10; i++){//取数组地址,从0开始.float f = (float)*(st.X + i); //强制转换为float类型, *符表示取指针的值Console.WriteLine(f.ToString());}}public unsafe struct StrTest{public float* X;}

慕沐林林

float[] 属于对象就是你取地址也不行fixed(test.x=&a){//代码 注意出了这个区域就会出现问题这个是用于固定托管对象地址了因为托管对象可能会被移动}
打开App,查看更多内容
随时随地看视频慕课网APP