小白想问程序总是一直报错“有多个 重载函数 "insetElem" 实例与参数列表匹配” 要怎么改?

小白想问程序总是一直报错“有多个 重载函数

问题描述:


#include<stdio.h>
#include<string.h>
#define maxsize 10
typedef struct
{
    int data[maxsize];
    int length;
}Sqlist;
int insetElem(Sqlist, int, int);
int insetElem(Sqlist &L,int p, int e)//定义插入之后的功能,还要自己输入数据 e是插入的元素,p是插入的位置
{
    int i;
    if (p<0 || p>L.length || L.length > maxsize)//判断插入的位置是否合法
        printf("输入错误");
        return 0;
    for (i = L.length - 1; i >= p; i--)//
        L.data[i + 1] =L.data[i];
    L.data[p] = e;
    L.length++;//顺序表的长度加1
    return 1;
}
int main()
{
    int d,f;
    Sqlist l;
    int i;
    {
    printf("输入原数组\n");
    scanf("%d", &l.data[maxsize]); }
    printf("输入插入的位置和值\n");
    scanf("%d%d", &d, &f);
    insetElem (l,d,f);
    return 0;
}

做的是顺序表的插入,一直改不对,求解答!
错误显示
E0308 有多个 重载函数 "insetElem" 实例与参数列表匹配:
C2668 “insetElem”: 对重载函数的调用不明确

修改如下,供参考对照:

#include<stdio.h>
#include<string.h>
#define maxsize 10
typedef struct
{
    int data[maxsize];
    int length;
}Sqlist;
//int insetElem(Sqlist, int, int);
int insetElem(Sqlist& L, int p, int e)//定义插入之后的功能,还要自己输入数据 e是插入的元素,p是插入的位置
{
    int i;
    if (p < 0 || p > L.length || L.length >= maxsize) {//判断插入的位置是否合法
        printf("插入的位置错误");
        return 0;
    }
    for (i = L.length; i >= p; i--)
        L.data[i] = L.data[i-1];
    L.data[p-1] = e;
    L.length++;//顺序表的长度加1
    return 1;
}
int main()
{
    int d, f;
    Sqlist l;
    l.length = 0;
    int i;
    printf("输入原数组\n");
    for (i = 0; i < 5; i++)//假设输入5个
    {
        scanf("%d", &l.data[i]); 
        l.length++;
        if (l.length == maxsize) {
            printf("表已满!\n");
            break;//大于表上限,退出
        }
    }

    printf("输入插入的位置和值\n");
    fflush(stdout); rewind(stdin);
    scanf("%d%d", &d, &f);
    insetElem(l, d, f);

    for (i = 0; i < l.length; i++)//插入后输出看看
        printf("%d ", l.data[i]);
    return 0;
}

把第10行删了就行,