似乎无法理解c程序中最后遗留的错误

问题描述 投票:-5回答:2

错误我不明白如何修复和需要帮助是:

在第20行和第28列

[Error]无法将参数'1'的'int **'转换为'int *'为'void lotto(int *,int,int,int,int,int)'

在这部分代码中:

    #include <stdio.h>
    #include <stdlib.h>

    int read1();
    int even1();
    int even2();
    int sum1();
    int sum2();
    void lotto(int*, int, int, int, int, int);
    int* table_num(int);

    int main()
    {
        int a=read1();
        int* t = table_num(a);
        int x=even1();
        int y=even2();
        int g=sum1();
        int h=sum2();
        lotto(&t, a, x, y, g, h); /*error here*/
        return 0;
    }

这是功能:

void lotto(int* a, int n, int armax, int armin, int atmax, int atmin)
{
    int q, w, z=1;

    for (int i = 0; i < n-5; ++i) 
    {
        for (int j = i+1; j < n-4 ; ++j) 
        {
            for (int k = j+1; k < n-3 ; ++k) 
            {
                for (int l = k+1; l < n-2 ; ++l) 
                {
                    for (int m = l+1; m < n-1 ; ++m) 
                    {
                        for (int i1 = m+1; i1 < n; ++i1) 
                        {

                            q=0;

                            (i%2==0)?q+=1:2;
                            (j%2==0)?q+=1:2;
                            (k%2==0)?q+=1:2;
                            (l%2==0)?q+=1:2;
                            (m%2==0)?q+=1:2;
                            (i1%2==0)?q+=1:2;

                            w=i+j+k+l+m+i1;

                            if((q<=armax||q>=armin)&&(w>=atmin||w<=atmax))
                            {

                                printf("The %d st/nd/rd/th group of 6 numbers is :\t",z);
                                printf("%d ,%d ,%d ,%d ,%d ,%d \n\n",*(a+i), *(a+j), *(a+k), *(a+l), *(a+m), (a+i1));
                                z++;

                            }else
                                continue;



                        }

                    }

                }

            }

        }

    }

}

如果你想要整个代码来回答我的问题我可以编辑它

c
2个回答
1
投票

将此lotto(&t, a, x, y, g, h);替换为lotto(t, a, x, y, g, h);

在函数声明中,您已经提到输入参数作为指向int的指针,但是您再次将指针传递给指向int的指针,这会导致错误。


1
投票

问题是你的lotto()中的'&t'你指定'int *'并发送'int **'。尝试编译没有'&'

© www.soinside.com 2019 - 2024. All rights reserved.