gpt4 book ai didi

c++ - 动态分配的矩阵读取不正确

转载 作者:行者123 更新时间:2023-11-28 06:33:09 24 4
gpt4 key购买 nike

我想把一个数组的内容放在一个矩阵中。如果矩阵是静态的,一切正常,但当我尝试动态分配时,读取不正常。

int main() 
{
int a[]={2, 1, 2, 4, 9, 2, 1, 7, 3, 5, 8, 3};

int c[3][4];

int **b;
b = (int**) malloc (3*sizeof(int*));
for (int i=0; i < 3; i++)
b[i] = (int*) calloc (4, sizeof(int)); //o linie

int k=0, m=0;
for (int i=0; i<12; i++)
{
b[k][m]=a[i];
c[k][m]=a[i];
m++;
if((i!=0) && (!(i % 4))) {k++; m=1;}
}

for (int i=0; i<3; i++){
cout << endl;
for (int j=0; j<4; j++)
cout << b[i][j] << " ";
}

cout << endl;

for (int i=0; i<3; i++){
cout << endl;
for (int j=0; j<4; j++)
cout << c[i][j] << " ";
}
return 0;
}


The output:
2 1 2 4
0 1 2 7 //I have 0, why don't I have 9?
0 5 8 3 //I have 0, why don't I have 3?

2 1 2 4
9 1 2 7 //here is correct
3 5 8 3 //here is correct

请告诉我我哪里错了。

最佳答案

你应该把你的if改成

if (i % 4 == 3)

关于c++ - 动态分配的矩阵读取不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27198269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com