gpt4 book ai didi

c - 参数错误的不兼容类型

转载 作者:行者123 更新时间:2023-11-30 14:48:00 25 4
gpt4 key购买 nike

#include<stdio.h>
float functie(float vec[100],int dim2)
{
int j;
float suma,medie;
for(j=1;j<=dim2;j++)
{
suma=suma+vec[j];
}
medie=suma/dim2;
return medie;
}

int main()
{
int dim ,i;
float v[100],k;
printf("Introduceti dimensiunea: ");
scanf("%d",&dim);
for(i=1;i<=dim;i++)
{
printf("v[%d]= ",i);
scanf("%f",&v[i]);
}
k=functie(v[i],dim);
printf("Date de iesire: %.2f",k);
return 0;
}

我正在尝试对“暗淡”元素 vector 进行算术平均,
使用函数“functie”;但我收到此错误:

'incompatible type for argument 1 of 'functie'  problema3.c /problema3.c    line 23 C/C++ Problem'

错误出现在“k=functie(v[i],dim)”行。
我做错了什么?

最佳答案

这个

k=functie(v[i],dim);

使用 float 作为第一个参数调用 functie,该 float 位于数组 v 的位置 i 处。
您的函数被声明为具有数组类型的参数(该参数衰减为指向 float 的指针)。
所以你正在将一个 float 输入到需要指针 float 的东西中。
这就是编译器告诉你的。

为了解决这个问题,您应该检查有两个非常相似的循环的原因,
main 中的一个,将一个又一个的 float 提供给 functie
functie 内部的一个循环遍历所有数组,但它没有得到它。
一旦你决定了要在哪里循环,你会突然发现解决类型冲突很容易。
如果不知道您想要做什么,就不可能给出解决方案代码。

您的代码还存在其他问题,这些问题不在您的问题范围内。

例如,仅举几例:

  • 访问尺寸dim后面的数组元素,尽管这只对dim=100有效
  • 由于缺乏大小检查,可能输入太大的数组
  • scanf 返回值未检查
  • 无法从非数字输入中恢复

关于c - 参数错误的不兼容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50802848/

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