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

解决方案:

维度被偷换或误用。

这个分配的指针是 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;

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何获得网络访问AWS VPC?

2022-9-8 13:12:39

未分类

如何在静态中使用getString()?

2022-9-8 13:12:41

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索