【问题标题】:Convert double * to double [9] in C [closed]在C中将double *转换为double [9] [关闭]
【发布时间】:2014-07-08 19:32:21
【问题描述】:

如果双精度 * 只指向一个双精度而不是数组,我可以转换它。

这是我的功能,

double fun(double * in){
  return *in;
}

我的 double * in 有 9 个元素,我正在尝试将它们传递给数组 out[9];

【问题讨论】:

  • 您能否详细说明您的问题?
  • 您的问题是“如何确定指针指向单个双精度还是数组”?
  • 也许你应该提到你正在尝试做什么。

标签: c pointers double


【解决方案1】:
#include <stdio.h>
#include <string.h>

typedef struct dbl9 {
    double array[9];
} Dbl9;

Dbl9 fun(double *in){
    Dbl9 ret;
    memcpy(ret.array, in, sizeof(ret.array));//There can be no assurance that <in> the correct
    return ret;
}

int main(){
    double array[9] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
    Dbl9 dbl9= fun(array);
    int i;
    for(i=0;i<9;++i){
        printf("%f\n", dbl9.array[i]);
    }
    return 0;
}

【讨论】:

  • 当然,通过栈返回结构体效率不高但是返回数组是最接近图像的。
【解决方案2】:

不能返回数组,需要在函数外声明:

void fun(double *out, double *in, size_t num_items){
  int i;
  for (i = 0; i < num_items; i++) {
    out[i] = in[i];
  }
}

// Somewhere else in your code:
double destination[9];
fun(destination, in, 9); // Copy 9 doubles into destination

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 2023-04-01
    • 2016-10-10
    相关资源
    最近更新 更多