c - 如何在c中返回一个数组

标签 c arrays

我知道这个问题以前曾被问过,但无法以与我在此处描述的方式相同的方式找到它:

这一切都是关于用 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/

相关文章:

java - 使用数组添加、查看、更新和删除学生记录

c - IF 循环中的算术运算

c - 这有什么问题?这段代码没有在链表的开头插入元素

c# - 使用单循环在数组中查找重复项

c++ - 奇怪的重新分配行为

php获取数组的数据大小

c - 在 C 中使用 setjmp 和 longjmp 是好的编程习惯吗?

c - int 除以 unsigned int 导致翻转

c - 如何在 c 中使用 sscanf 分隔整数值?

Python - 转换时间格式12 :00a to 24hour