首页 > 解决方案 > 二维数组未在 c 的循环中正确存储信息

问题描述

我正在尝试将二维数组从一个单独的函数返回到我的主函数,在该函数中我输入了一些我在函数中计算的数据。但是,第二行没有正确存储信息。如果我删除它正确存储的循环,但我需要一个循环以避免一遍又一遍地编写相同的代码。示例代码:

double** func1(int int1, double double1, double double2, float float1){


double** pntrArray;
int i;

pntrArray = calloc((length * 12), sizeof(double*));

for(i = 0; i < 2; i++){
 pntrArray[i] = calloc(2, sizeof(double));

int r = 0;

do{
 //calculations here
 pntrArray[0][r] = data calculated;
 pntrArray[1][r] = data calculated;
 r++;
}while(r < int1);

我尝试了不同类型的循环,但我无法让它输入正确的数据。我刚刚开始学习 c,所以这可能是一个非常简单的解决方法。

标签: cmultidimensional-array

解决方案


尺寸被交换或滥用:

这为行分配指针length*12,但后面的代码建议您只需要两行:

pntrArray = calloc((length * 12), sizeof(double*));

然后这会为两行中的每一行中的两个元素分配空间,但前面的代码建议您需要length*12两行中的每一行中的元素:

for(i = 0; i < 2; i++){
 pntrArray[i] = calloc(2, sizeof(double));

稍后,这适用于仅两行中的一些元素:

 pntrArray[0][r] = data calculated;
 pntrArray[1][r] = data calculated;

推荐阅读