C语言在进行矩阵运算的时候可以按照下边来定义
typedef struct Matrix
{
double **p;
int rows;
int cols;
} Matrix;
向量可以定义成下式
typedef struct Vector
{
double *p;
int len;
} Vector;
这样可以包括所有维数的向量和矩阵。
要在初始化的时候给矩阵和向量申请空间,不然为空会报错,在申请空间时定义函数
void initialMatrix(Matrix * A)
{
A->p = (double**)malloc(A->rows * sizeof(double*));
for (int i = 0; i < A->rows; i++)
{
A->p[i] = (double*)malloc(A->cols * sizeof(double));
}
}
void initialVector(Vector * A)
{
for (int i = 0; i < A->len; i++)
{
A->p = (double*)malloc(A->len * sizeof(double));
}
}
使用完要对空间进行释放
void freeMatrix(Matrix * A)
{
for (int i = 0; i < A->rows; i++)
{
free(A->p[i]) ;
}
free(A->p);
}
void freeVector(Vector * A)
{
free(A->p);
}