参数错误的类型不兼容

时间:2018-06-11 17:06:13

标签: c eclipse

#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;
}

我正在尝试对&#34; dim&#34;的向量进行算术平均。元素,
使用功能&#34; functie&#34 ;;但是我收到了这个错误:

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

错误发生在&#34; k = functie(v [i],dim)&#34;行。
我做错了什么?

3 个答案:

答案 0 :(得分:1)

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

使用float作为第一个参数调用functie,浮点数组i的位置v
您的函数被声明为具有数组类型的参数(它衰变为指向float的指针) 所以你要把一个浮子喂给想要指针漂浮的东西 这就是编译器告诉你的。

为了解决问题,你应该检查两个非常相似的循环的原因,
一个在主,一个接一个地浮动到functie
一个内部functie循环遍历所有数组,它没有得到 一旦你决定了你想要循环的地方,你就会突然发现解决类型冲突很容易 在不知道您想要做什么的情况下,无法提供解决方案代码。

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

,例如,仅举几例:

  • 访问大小为dim的数组元素1,但这只对dim = 100
  • 有影响 由于缺少尺寸检查,
  • 可能进入太大的阵列
  • 未检查scanf返回值
  • 无法从非数字输入中恢复

答案 1 :(得分:0)

`k=functie(v,dim);`

如果要将数组作为参数传输,则应传输数组的原始地址(它表示数组的名称)

答案 2 :(得分:0)

在致电functie时,您传递的是单个数组元素,而不是整个数组。该单个元素的类型为float,其中函数期望float *(浮点指针)。

如果要将整个数组作为参数传递,只需传递数组名称(无下标):

k = functie( v, dim );