Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将C中的double*转换为double[9]_C_Pointers_Double - Fatal编程技术网

将C中的double*转换为double[9]

将C中的double*转换为double[9],c,pointers,double,C,Pointers,Double,如果double*只指向一个double,而不是一个数组,我可以转换它 这是我的功能 double fun(double * in){ return *in; } 我的double*in有9个元素,我试图将它们传递给数组out[9] 无法返回数组,需要在函数外部声明: void fun(double *out, double *in, size_t num_items){ int i; for (i = 0; i < num_items; i++) { out[i]

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

这是我的功能

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

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

无法返回数组,需要在函数外部声明:

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
void fun(双出双入,大小/数量项目){
int i;
对于(i=0;i
#包括
#包括
类型定义结构dbl9{
双数组[9];
}Dbl9;
Dbl9乐趣(双倍*英寸){
Dbl9-ret;
memcpy(ret.array,in,sizeof(ret.array));//不能保证
返回ret;
}
int main(){
双数组[9]={1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0};
Dbl9 Dbl9=fun(数组);
int i;

对于(i=0;我可以请你为你的问题提供更多的细节吗?你的问题是“如何确定指针是指向一个双精度还是一个数组”?也许你应该提到你正在尝试做什么。当然,通过堆栈返回结构是没有效率的,但它最接近返回数组的图像。
#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;
}