为了我的个人娱乐,我正在学习 C。我正在尝试编写一个矩阵计算标题。我有一个显示矩阵的函数,rmat_show(rmatrix *r),它应该打印整个矩阵。但是,似乎我的数据类型 rmatrix 没有很好地传递给这个函数。
rmat.h:
// Matrix struct, m x n matrix. Pointer *value points to the contents.
struct srmatrix {
int m,n;
float *value;
};
typedef struct srmatrix rmatrix;
// Show the matrix
void rmat_show(rmatrix* r) {
int i, j;
printf("\nshow\n");
printf("[%dx%d]\n",r->m,r->n);
for (i = 0; i < r->m; i++) {
for (j = 0; j < r->m; j++) {
printf("%d\t",value[(j-1)*r->m+i-1]);
}
printf("\n");
}
}
我有这个作为主文件:
#include "rmat.h"
int main(int argc, char **argv){
float val[] = {0.1};
rmatrix *r = malloc(sizeof(rmatrix));
r->n = 1;
r->m = 1;
r->value = val;
rmat_show(r);
return 0;
}
在 rmat_show 之后,我尝试用另一个函数杀死矩阵。它产生相同的错误,即:'rmat_show' 的参数 1 的不兼容类型预期为'rmatrix',但参数的类型为'struct rmatrix *''。我尝试搜索“指向 typedef 的指针”和类似术语,但没有结果。我相信 typedef 声明不会延续到函数定义中。我在 Windows 7 上使用 msys 和 mingw。
谢谢您的帮助。
编辑:添加了我抄错的 typedef 行。