我编写了一个程序,创建了2个矩阵并将它们相乘。但是我必须将我的代码划分为函数,并且我在声明一个将为矩阵分配内存的函数时遇到问题。
这是我的代码:
void matrixMult(){
int **A, **B, **C; //matrices
int rowA, colA, rowB, colB; //rows and columns
int i, j, k; //for iterations
printf("Number of rows in matrix A: \n");
scanf("%d", &rowA);
printf("Number of columns in matrix A: \n");
scanf("%d", &colA);
printf("Number of rows in matrix B: \n");
scanf("%d", &rowB);
printf("Number of columns in matrix B: \n");
scanf("%d", &colB);
//memory allocation
A = (int**)malloc(rowA * sizeof(int));
B = (int**)malloc(rowB * sizeof(int));
C = (int**)malloc(rowA * sizeof(int));
for (i = 0; i < rowA; i++)
{
A[i] = (int*)malloc(colA * sizeof(int));
}
for (i = 0; i < rowB; i++)
{
B[i] = (int*)malloc(colB * sizeof(int));
}
for (i = 0; i < rowA; i++)
{
C[i] = (int*)malloc(colB * sizeof(int));
}
/*
the rest of code
*/
}
这个功能应该是什么样的?
答案 0 :(得分:3)
您有两种方法可以在实践中使用:
int **alloc_matrix(size_t rows, size_t columns)
int alloc_matrix(int*** res, size_t rows, size_t columns)
第二个函数返回的值表示分配内存成功或失败。
答案 1 :(得分:0)
第一次分配你有错误。你必须为Ints分配一系列指针。
A= (int**)malloc(rowA * sizeof(int*));
B = (int**)malloc(rowB * sizeof(int*));
C = (int**)malloc(rowA * sizeof(int*));
表示功能问题
int** alocatingArray(size_t nRows, size_t nCols){
...
}
此函数将用于返回指向矩阵
的主指针的每个数组