的过程如下:
int** matrixA;
matrixA = (int**)malloc(m * sizeof(int*));
for (int i = 0; i < m; i++) {
matrixA[i] = (int*)malloc(n * sizeof(int));
}
对于矩阵B,可以使用以下代码进行内存分配:
int** matrixB;
matrixB = (int**)malloc(n * sizeof(int*));
for (int i = 0; i < n; i++) {
matrixB[i] = (int*)malloc(p * sizeof(int));
}
这样就创建了两个动态分配的二维数组,分别用于存储矩阵A和矩阵B的元素。
// 为矩阵A赋随机值
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
matrixA[i][j] = rand() % 100; // 生成0到99之间的随机数
}
}
// 为矩阵B赋随机值
for (int i = 0; i < n; i++) {
for (int j = 0; j < p; j++) {
matrixB[i][j] = rand() % 100; // 生成0到99之间的随机数
}
}
int** matrixC;
matrixC = (int**)malloc(m * sizeof(int*));
for (int i = 0; i < m; i++) {
matrixC[i] = (int*)malloc(p * sizeof(int));
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
matrixC[i][j] = 0; // 初始化矩阵C的元素为0
for (int k = 0; k < n; k++) {
matrixC[i][j] += matrixA[i][k] * matrixB[k][j];
}
}
}
printf("矩阵C的结果:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
printf("%d ", matrixC[i][j]);
}
printf("\n");
}
注意:完成矩阵乘法后,需要释放动态分配的内存,以避免内存泄漏。可以使用以下代码释放内存:
for (int i = 0; i < m; i++) {
free(matrixA[i]);
}
free(matrixA);
for (int i = 0; i < n; i++) {
free(matrixB[i]);
}
free(matrixB);
for (int i = 0; i < m; i++) {
free(matrixC[i]);
}
free(matrixC);
这样就完成了使用malloc进行矩阵乘法的过程,无需用户输入。
领取专属 10元无门槛券
手把手带您无忧上云