我知道这个问题以前曾被问过,但无法以与我在这里描述的方式相同的方式找到它:
这一切都是关于以c语言返回一维数组。在Java中,它非常简单:
double[] myFunction() {
double[] v = new double[10];
return v;
}
我知道在c中的实现是不一样的。但是由于可以将数组元素视为指向该数组中第一个元素的指针,因此我认为可以执行以下实现:
double (*myFunction()) {
double v[10];
return v;
}
这在gcc中可以正常编译,但是当我调用该函数时,出现编译错误。
所以我的问题-如何在c语言中返回一维向量?
谢谢
样例代码
#include <stdio.h>
#include <stdlib.h>
double *myFunction1(){
return malloc(10*sizeof(double));
}
double (*myFunction2())[10]{
double (*p)[10];
p = malloc(sizeof(double[10]));
return p;
}
typedef struct d10 {
double vec[10];
} D10;
D10 myFunction3(){//Make little sense
D10 v = {{0}};
v.vec[9]=1.25;
return v;
}
int main(){
double *v1 = myFunction1();
double (*v2)[10] = myFunction2();
D10 v3= myFunction3();
//do something
printf("%lf\n", v3.vec[9]);
v1[0] = 3.14;
(*v2)[0] = 3.14 * 2;
free(v1);
free(v2);
return 0;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句