C# 将c中的double[]转换为double*#

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

如何在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;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.这是有道理的事实上,我没有想到这一点。