2d数组在C语言的循环中不能正确存储信息。

问题描述 投票:0回答:1

我试图从一个单独的函数中返回一个二维数组到我的主函数中,在那里我输入一些数据,我在函数中计算。然而,第二行没有正确存储信息。如果我删除循环,它就会正确存储,但我需要一个循环来避免重复编写相同的代码。示例代码。

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语言,所以这可能是一个非常简单的修复方法。

c multidimensional-array
1个回答
0
投票

维度被偷换或误用。

这个分配的指针是 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;
© www.soinside.com 2019 - 2024. All rights reserved.