我试图从一个单独的函数中返回一个二维数组到我的主函数中,在那里我输入一些数据,我在函数中计算。然而,第二行没有正确存储信息。如果我删除循环,它就会正确存储,但我需要一个循环来避免重复编写相同的代码。示例代码。
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语言,所以这可能是一个非常简单的修复方法。
维度被偷换或误用。
这个分配的指针是 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;