C# 将c中的double[]转换为double*#
如何在c语言中将C# 将c中的double[]转换为double*#,c#,pointers,C#,Pointers,如何在c语言中将double[]转换为double*# 我在努力 unsafe { System.Double[] a = { 1.0, 2.0, 3.0, 4.0, 5.0 }; fixed(double *aP = a) for (int i = 0; i < a.Length ; i++) { //need to copy? } } 不安全{ Double[]a={1.0,2.0,3.0,4.0,5.0}; 固定(双*aP=a) for(int i=0
double[]
转换为double*
#
我在努力
unsafe {
System.Double[] a = { 1.0, 2.0, 3.0, 4.0, 5.0 };
fixed(double *aP = a)
for (int i = 0; i < a.Length ; i++)
{
//need to copy?
}
}
不安全{
Double[]a={1.0,2.0,3.0,4.0,5.0};
固定(双*aP=a)
for(int i=0;i
这在我(非常有限,只运行过一次)的测试中发挥了很好的作用
unsafe {
Double[] a = { 1.0, 2.0, 3.0, 4.0, 5.0 };
fixed (double* aP = a) {
for (int i = 0; i < a.Length; i++) {
System.Console.WriteLine(*aP + i);
}
}
}
不安全{
双[]a={1.0,2.0,3.0,4.0,5.0};
固定(双*aP=a){
for(int i=0;i
@ErikTheViking:你错了。在某些条件下,C#允许指针处于不安全的上下文中。例如,您可以固定数组并获取指向它的指针。@AsfK:这也不正确:。您的示例使用了double*p=&a[0]
(而不是像您这样的a[0]
,这将是double
),这与double*p=a
。OP,您到底遇到了什么问题?您是否遇到编译器错误?如果是,是什么?它是否告诉您必须在编译器选项中启用不安全代码?为此,请转到项目属性,生成“允许不安全代码”。就目前而言,你的“问题”甚至不包含问号。你打算用这个double*
做什么?您是否计划将其传递给外部Win32或本机函数P/Invoke,或COM对象?如果是这样,这个解决方案将是不够的。@AvnerShahar Kashtan这是绝对正确的。我有一个预感,OP只需要通过正确的编译器flag@EdS.这是有道理的事实上,我没有想到这一点。