C语言编写矩阵乘法函数,怎么使用动态内存分配?
想要编写一个可以调用的函数,能实现矩阵的乘法,矩阵的维数不固定,但是可以通过传参传入函数中,传入的参数中包括一个存放结果的矩阵,我使用了宏定义函数编写矩阵乘法,如果不想使用宏定义函数的话,该怎么写?遇到的问题是在定义函数参数时,矩阵的维数不能确定,不知道要怎么处理,动态内存分配也不太清楚应该在何处使用,请前辈指点。这是我写的宏定义函数实现的矩阵乘法
程序代码:#include <stdio.h>
#define MATRIX_PRINT(mtx) matrix_print( sizeof(mtx)/sizeof(*(mtx)), sizeof(*(mtx))/sizeof(**(mtx)), (mtx) )
#define MATRIX_MUT(a,b,c) matrix_mut(sizeof(a)/sizeof(*(a)),sizeof(*(a))/sizeof(**(a)),sizeof(*(b))/sizeof(**(b)),(a),(b),(c))
void matrix_print( size_t row, size_t col, float mtx[row][col] )
{
size_t r=0,c=0;
for( r=0; r<row; r++)
{
for( c=0; c<col; c++ )
{
printf( "%f ", mtx[r][c]);
}
}
}
void matrix_mut(size_t row,size_t med,size_t col,float a[row][med],float b[med][col],float c[row][col])
{
size_t i,j,l;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
float sum=0;
for(l=0;l<med;l++)
{
sum=sum+a[i][l]*b[l][j];
}
c[i][j]=sum;
}
}
}
int main( void )
{
float a[2][3] = { {1,2,3}, {1,5,2} };
float b[3][2]={1,2,2,1,3,1};
float d[2][2];
MATRIX_MUT(a,b,d);
MATRIX_PRINT( d );
return 0;
}




