为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
斯蒂芬大帝 2019-03-22 15:14:40
在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*'

3 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

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;
}
}

查看完整回答
反对 回复 2019-03-27
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

很久没玩指针了,写起来有点困难,但还是实现了:

//必须声明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;
}



查看完整回答
反对 回复 2019-03-27
?
慕沐林林

TA贡献2016条经验 获得超9个赞

float[] 属于对象
就是你取地址也不行
fixed(test.x=&a)
{
//代码 注意出了这个区域就会出现问题
这个是用于固定托管对象地址了
因为托管对象可能会被移动
}



查看完整回答
反对 回复 2019-03-27

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号