gpt4 book ai didi

c - 为什么ide显示 "[Error] incompatible type for argument"?

转载 作者:太空宇宙 更新时间:2023-11-04 02:35:50 24 4
gpt4 key购买 nike

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

}

我有这个错误:

[Error] incompatible type for argument 1 of 'aquisisciRazionale'

[Note] expected 'Razionale' but argument is of type 'struct Razionale (*)[5]'

我不明白是我定义结构体的时候出错了,还是定义函数的时候出错了。有人可以帮助我吗?

最佳答案

Matrice typedef 已经是一个二维数组。当你声明你的函数时

void acquisisciMatrice(Matrice mat[DIMMAX][DIMMAX]){

你是说 matMatrice 的二维数组,它是 Razionale 的 4 维数组。 mat[i][j] 是一个矩阵,而不是一个Razionale

函数应该只是

void acquisisciMatrice(Matrice mat){

因为维度是 Matrice typedef 的一部分。您还应该更改 main() 中的变量:

Matrice m;
acquisisciMatrice(m);

请注意,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));

}

关于c - 为什么ide显示 "[Error] incompatible type for argument"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37714259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com