the*_*sch 0 c arrays malloc pointers loops
我正在学习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;
}
Run Code Online (Sandbox Code Playgroud)
为什么这不能编译?它的抱怨matrix[i][j]不是指针/数组.但我刚刚宣布它为指针六行以上......
它是一维数组,因此您必须将其视为一维数组,而不是二维数组.
您当然可以将n x n元素存储在其中:
matrix[i * n + j] = rand() % 10;
Run Code Online (Sandbox Code Playgroud)
如果您愿意,可以按照如何在C中使用动态多维数组中给出的建议设置2D结构?
顺便说一句,您可能不希望srand()每次创建矩阵时都要调用.如果你create_matrix()快速连续两次调用,你最终可能得到相同的"随机"矩阵.srand()在程序开始时调用一次.