【发布时间】:2016-06-08 22:56:09
【问题描述】:
我是 C 初学者,我不明白为什么我运行下面的代码时
#include <stdio.h>
#include <stdlib.h>
#define DIMMAX 5
#define MAXSTRINGA 20
typedef struct{
int num;
int den;
} Razionale;
typedef Razionale Matrice[DIMMAX][DIMMAX];
void aquisisciRazionale(Razionale);
void acquisisciMatrice(Matrice[DIMMAX][DIMMAX]);
void aquisisciRazionale(Razionale n){
printf("Inserire numeratore: ");
scanf("%d", &n.num);
printf("Inserire denominatore: ");
scanf("%d", &n.den);
}
void acquisisciMatrice(Matrice mat[DIMMAX][DIMMAX]){
int i, j;
for(i=0; i<DIMMAX; i++){
for(j=0; j<DIMMAX; j++){
aquisisciRazionale(mat[i][j]);
}
}
}
int main(int argc, char *argv[]) {
Matrice m[DIMMAX][DIMMAX];
acquisisciMatrice(m);
}
我有这个错误:
[错误] 'aquisisciRazionale' 的参数 1 的类型不兼容
[Note] 预期为“Razionale”,但参数类型为“struct Razionale (*)[5]”
我不明白定义结构或定义函数时是否有错误。有人可以帮我吗?
【问题讨论】:
-
与问题无关,但您可以在
for内声明计数器变量,如下所示:for(int i = 0; i < DIMMAX; i++) -
避免类型定义。它们的存在只是为了迷惑你。
-
为了将来参考,请在 Google 上搜索错误消息,省略您的变量名称。我搜索了“参数的错误不兼容类型”,并在搜索顶部找到了三个相关的 SO 帖子。
标签: c