【问题标题】:Create array of pointers from an array of double in C#从 C# 中的双精度数组创建指针数组
【发布时间】:2011-10-06 09:38:55
【问题描述】:

我正在尝试创建一个指向双精度数组的指针引用数组。例如;

double[] mylist = new double[100];
fixed (double* p = mylist) { }

现在正如 MSDN 文档所述,这相当于 p = &mylist[0] 这仅取第一个值,是否可以在另一个数组中创建指向变量的指针数组?还是只使用一个指针的做法?

提前感谢您的帮助

【问题讨论】:

  • int vs double - 你能澄清一下这是否只是一个错字吗?另外....问题/问题是什么?
  • 好的,我已经试着澄清了。
  • p = &mylist[0] - 指向数组的第一个元素。当您拥有指向第一个元素的指针时,获取其余数组元素应该没有任何问题。你想在这里实现什么,你在做 P/Invoke 的事情吗?
  • 是的,我正在尝试调用 DLLimport 并传递数组指针引用,并将其大小作为参数。这有意义吗?

标签: c# arrays pointers unmanaged


【解决方案1】:

数组元素位于连续的内存中,因此通常有一个指向第一个元素的指针并进行指针运算以获取其他元素就足够了。

【讨论】:

    【解决方案2】:

    当你有一个指向向量的类型化指针(或者,更准确地说,第一项一个向量中),它的工作方式就像在 C/C++ 中一样;您所需要的只是单个指针,您可以将它或者用作单个项用作从零开始的数组;你仍然可以访问p[3],除了现在而不是使用数组访问隐喻,这是应用“3 * the-item-size 作为相对于p 的偏移量”。所以:

    p[3] = 1.0;
    

    没问题。当然,请注意,如果您不小心超出数组边界,就会发生不好的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多