我只是想用零值初始化一个动态创建的矩阵:
#include <stdio.h>
#include <stdlib.h>
void writeMatrix (int **m, int size) {
int i, j;
for (i=0; i<size; i++) {
for (j=0; j<size; j++) {
printf("%i ", m[i][j]);
}
printf("\n");
}
}
int main(void) {
int i, size;
scanf("%i", &size);
int **m;
m = malloc(size * sizeof(int *));
for (i=0; i<size; i++) {
m[i] = malloc(size * sizeof(int));
m[i] = {0};
}
writeMatrix(m, size);
return 0;
}
但它因 this error 而崩溃:
compilation info
prog.c: In function 'main':
prog.c:23:10: error: expected expression before '{' token
m[i] = {0};
^
这不是将所有矩阵值设置为零的正确方法吗?
提前致谢。
最佳答案
您不能使用类似 m[i] = {0};
的语法,除非您在定义数组时对其进行初始化。你要使用的是memset
:
memset(m[i], 0, size * sizeof(int));
或者您可以使用 calloc
,它为数组分配内存并立即将其清零:
m[i] = calloc(size, sizeof(int));
关于c - 将数组中的所有值设置为零时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32530793/