【发布时间】:2023-04-04 10:40:01
【问题描述】:
我想知道为什么前两个元素总是非零。我不知道我还能如何描述这个问题,但这不允许我发布这个问题,所以我正在写这个。不确定这是否可行。
#include <stdio.h>
#include <stdlib.h>
#define SIZE 3
void printMatrix(int **m)
{
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++)
printf("%d ", m[i][j]);
printf("\n");
}
}
int main(int argc, char const *argv[])
{
int **matrix;
matrix = (int **) calloc(sizeof(int), SIZE);
for (int i = 0; i < SIZE; ++i)
matrix[i] = (int *) calloc(sizeof(int), SIZE);
printf("%s\n", "Matrix initialized.");
printMatrix(matrix);
return 0;
}
输出:
Matrix initialized.
1371548192 32653 0
0 0 0
0 0 0
【问题讨论】:
-
您能否将您对 calloc 的第一次调用更新为
matrix = (int **) calloc(sizeof(int*), SIZE);并让我知道是否有任何变化? -
是的,在我将其更改为
sizeof(int *)后它起作用了。我意识到在我的系统上它将是 8,而sizeof(int)是 4。
标签: c matrix dynamic-memory-allocation