C 为什么ide会显示;[错误]参数“的类型不兼容?”;?
我是C语言的初学者,当我运行下面的代码时,我不明白为什么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
#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));
}