作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道这个问题以前曾被问过,但无法以与我在此处描述的方式相同的方式找到它:
这一切都是关于用 C 语言返回一个一维数组。在 Java 中这非常简单:
double[] myFunction() {
double[] v = new double[10];
return v;
}
我知道c中的实现不一样。但由于数组元素可以被视为指向该数组中第一个元素的指针,我认为可以执行以下实现:
double (*myFunction()) {
double v[10];
return v;
}
这在 gcc 中编译得很好,但是当我调用该函数时,出现编译错误。
我的问题 - 如何用 C 语言返回一维 vector ?
谢谢
最佳答案
示例代码
#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;
}
关于c - 如何在c中返回一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20775852/
我是一名优秀的程序员,十分优秀!