我正在学习 C 并尝试编写此函数
int *create_matrix(int n) {
int *matrix = malloc(n*n*sizeof(int));
srand(time(NULL));
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
matrix[i][j] = rand()%10;
}
}
return matrix;
}
为什么编译失败?它提示 matrix[i][j]
不是指针/数组。但我刚刚将其声明为上面六行的指针...
最佳答案
它是一维数组,因此您必须将其视为一维数组,而不是二维数组。
当然,您仍然可以在其中存储您的 n x n
元素:
matrix[i * n + j] = rand() % 10;
如果您愿意,可以按照 How do I work with dynamic multi-dimensional arrays in C? 中给出的建议设置二维结构。
顺便说一下,您可能不希望每次创建矩阵时都调用 srand()
。如果您快速连续两次调用 create_matrix()
,您最终可能会得到相同的“随机”矩阵。在程序开始时调用一次 srand()
。
关于C - 使用 malloc 创建一个数组,然后循环遍历它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26381258/