C 为什么ide会显示;[错误]参数“的类型不兼容?”;?

C 为什么ide会显示;[错误]参数“的类型不兼容?”;?,c,C,我是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 aquisisciRazio

我是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);

}
#包括
#包括
#定义DIMMAX 5
#定义MAXSTRINGA 20
类型定义结构{
int-num;
int den;
}Razionale;
typedef Razionale矩阵[DIMMAX][DIMMAX];
无效阿奎西西拉齐奥(Razionale);
无效收购矩阵(矩阵[DIMMAX][DIMMAX]);
无效阿奎西西拉齐奥(Razionale n){
printf(“数字插图:”);
scanf(“%d”和n.num);
printf(“插入分母:”);
scanf(“%d”和n.den);
}
无效获取矩阵(矩阵矩阵[DIMMAX][DIMMAX]){
int i,j;

对于(i=0;i而言,
Matrice
typedef已经是一个二维数组

void acquisisciMatrice(Matrice mat[DIMMAX][DIMMAX]){
你是说,
mat
是一个二维的
Matrice
数组,它是一个4维的
Razionale
mat[i][j]
数组,然后是一个
Matrice
,而不是
Razionale

函数应该是

void acquisisciMatrice(Matrice mat){
由于尺寸是
矩阵的一部分
typedef。还应在
main()中更改变量

请注意,调用时,
acquisisciRazionale()
不会填充
acquisisciMatrice()
中的矩阵元素

acquisisciRazionale(mat[i][j]);
您正在传递数组元素的副本。
scanf()
随后将写入该副本,这对原始数组没有影响。您应该传递一个指针

acquisisciRazionale(&mat[i][j]);
并将功能更改为:

void aquisisciRazionale(Razionale *n){

    printf("Inserire numeratore: ");
    scanf("%d", &(n->num));
    printf("Inserire denominatore: ");
    scanf("%d", &(n->den));

}

与问题无关,但您可以在
for
中声明计数器变量,如下所示:
for(int i=0;i
避免typedefs的可能重复。它们的存在只是为了迷惑您。为了将来的参考,请在Google上搜索错误消息,省去您的变量名。我搜索了“参数的错误不兼容类型”,并在搜索顶部获得三个相关SO帖子。
void aquisisciRazionale(Razionale *n){

    printf("Inserire numeratore: ");
    scanf("%d", &(n->num));
    printf("Inserire denominatore: ");
    scanf("%d", &(n->den));

}