我遇到一些麻烦,找到返回带有数组或指针数组的结构的最佳方法。
这是我想要做的: 我有一个结构
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;
}
数组中的用值填充,我希望用。取回整个结构 存储在mat.matrix中的数组的数组/指针。
如何做到这一点,是否有更好的方法?我是C的新手,更熟悉OO编程,这就是为什么我找不到最佳解决方案的原因。
希望有人能给我一些帮助!感谢
答案 0 :(得分:2)
我想是的
double array[rows][cols];
将在本地函数堆栈上创建数组时出现问题。
离开功能后,这将被删除。
您还应该知道,可变长度数组不符合ANSI-C,在我看来最好不要使用它。
您应该使用指针和动态内存分配。 malloc将是这里的关键词。
希望这有帮助
答案 1 :(得分:0)
我能想到的另一种方法是将所有输出参数作为输入指针,以便你的原型函数看起来像这样:
void read (string file, string tag, double *matrix, int *cols, int *rows, int *nelms);
或者你可以保留结构并寻找类似的东西:
void read (string file, string tag, ResultMat *myStructure);
IMO,没有“更好的方式”,这些都只是不同的选择,你的另一种选择,我发现自己经常使用。