【发布时间】:2021-11-29 12:45:13
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
void addition(int column, int row) {
int **array_a = (int **)malloc(sizeof(int*) * column);
int **array_b = (int **)malloc(sizeof(int*) * column);
int **array_c = (int **)malloc(sizeof(int*) * column);
for (int i = 0; i < column; i++) {
array_a[i] = (int *)malloc(sizeof(int) * row);
}
for (int i = 0; i < column; i++) {
for (int k = 0; k < row; k++) {
array_a[i][k] = rand();
}
for (int i = 0; i < column;) {
array_b[i] = (int *)malloc(sizeof(int) * row);
}
for (int i = 0; i < column; i++) {
for (int k = 0; k < row; k++) {
array_b[i][k] = rand();
}
}
for (int i = 0; i < column;) {
array_c[i] = (int *)malloc(sizeof(int) * row);
}
for (int i = 0; i < column; i++) {
for (int k = 0; k < row; k++) {
array_c[i][k] = array_a[i][k] + array_b[i][k];
}
}
for (int i = 0; i < column; i++) {
for (int k = 0; k < row; k++) {
printf("%d ", array_c[i][k]);
}
free(array_a);
free(array_b);
free(array_c);
}
}
}
int main(void) {
int column, row;
scanf("%d" "%d", &column, &row);
addition(column, row);
return 0;
}
我正在构建一个函数,它创建两个 2D 数组并用随机数填充值并组合它们的值。
没有错误,但 printf 不起作用。有什么办法让它工作吗?
我不知道如何解释更详细,但如果你问我,我会回答。
【问题讨论】:
-
“printf 不工作”相当含糊,请尝试更具描述性。你的代码肯定有问题,但你应该得到一些打印出来的东西。如果你使用随机数,你怎么知道会发生什么?
-
你有一个
for (int i = 0; i < column;) {循环分配所有可用内存,因为你忘记了i ++。另外,这个 for 循环嵌套在for (int i = 0; i < column; i++) {中,这意味着您可能在某处忘记了结束}。
标签: c multidimensional-array memory-management