c - 在 C 中使用结构并返回二维数组

标签 c arrays struct

我在寻找返回带有数组或指向数组的指针的结构的最佳方法时遇到了一些麻烦。

这就是我想做的: 我有一个结构

typedef struct {
    double *matrix;
    int cols;
    int rows;
    int nelems;
} ResultMat;

和一个解析文件的函数。我需要调用该函数并让它返回结构

ResultMat read (string file, string tag) {

  ResultMat mat;

  .....
  mat.cols = //some value from the file
  mat.rows = //some value from the file


  double array[rows][cols];
  //now i fill the array

  .......
  mat.matrix = *array;

  return mat;
}

数组中充满了值,我想用 array/指向存储在 mat.matrix 中的数组的指针。

如何做到这一点,是否有更好的方法?我对 C 很陌生,但更熟悉 OO 编程,这就是为什么我很难找到最佳解决方案。

希望大家能给我一些帮助!谢谢

最佳答案

我认为 双数组[行][列]; 当您在本地函数堆栈上创建数组时,这将是一个问题。 一旦您离开该功能,该信息就会被删除。 您还应该注意,可变长度数组不符合 ANSI-C,我认为您最好不要使用它。

您应该使用指针和动态内存分配。 malloc 将是此处的关键字。

希望这有帮助

关于c - 在 C 中使用结构并返回二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9198978/

相关文章:

c - 在 C 中获取当前按下的键?

c - 将开源程序集成到我自己的 C 语言中

c++ - 如何从头文件中初始化私有(private)数组C++

objective-c - 制作结构与对象所需的计算量

c# - 包装 C 结构以在 WPF 应用程序中进行访问

mongodb - Revel+mgo golang - 如何定义结构类型来处理来自数据库的嵌套对象?

c# - 调用 C DLL 函数以从类型定义的 char 编码字符串

c - 循环中的 snprintf 在 Linux 上不起作用

javascript 数组 join() 方法

javascript - 如何将多维数组转换为对象中的数组