【问题标题】:How to fix: passing argument 1 of 'sutuntopla' makes pointer from integer without a cast warning? [duplicate]如何解决:传递“sutuntopla”的参数 1 使指针从整数变为没有强制转换警告? [复制]
【发布时间】:2019-05-25 17:52:50
【问题描述】:

我想初始化一个 5x6 数组并将其传递给我想要获取数组每列总和的函数。但我不断收到警告我应该在哪里修复?

int sutuntopla(int b[5][6], int uzunluk)
{

    int i,j;
    int sum = 0;

    for(j = 0 ; j < uzunluk ; j++ ) 
    {

        for(i=0;i<5;i++)
        {
            sum+=b[i][j];
        }

        printf("Sutun %d toplami=%d\n",(j+1),sum);

        sum=0;

    }       
}

int main(int argc, char *argv[]) 
{

    int a[5][6] = {{1,2,3,4,5,6},{7,8,9,5,6,7},{1,2,5,6,7,8},{1,3,8,9,10,9},{1,4,4,4,5,6}};

    sutuntopla(a[5][6],6);
    return 0;

}

【问题讨论】:

    标签: c


    【解决方案1】:

    main 的这一行出现错误:-

    sutuntopla(a[5][6],6);
    

    您只需将a 传递给您的函数。 a[5][6] 尝试访问该特定位置处的元素,该元素的类型为 int 以实现预期 int[][] 的功能,并且还会导致索引超出范围。

    【讨论】:

    • @barkin7 欢迎您,如果您不需要从该函数返回任何值,请将其设为void 类型。
    • 函数不期望int[][]——C中没有这种类型,而是int (*)[6]
    【解决方案2】:

    此代码将起作用。

    //Here you can make the return type void
    int sutuntopla(int b[5][6], int uzunluk)
    {
    
        int i,j;
        int sum = 0;   
    
        for(j = 0 ; j < uzunluk ; j++ )
        {
            for(i = 0 ; i < 5 ; i++ )
            {
                sum += b[i][j];
            }
    
            printf("Sutun %d toplami=%d\n", (j+1), sum);
            sum = 0;
    
        }  
    
    }
    
    int main(int argc, char *argv[]) 
    {
    
        int a[5][6] = {{1,2,3,4,5,6},{7,8,9,5,6,7},{1,2,5,6,7,8},{1,3,8,9,10,9},{1,4,4,4,5,6}};
    
        sutuntopla(a, 6);
        //When you are passing an array, you just write its name,
        //like here for a.
        //It passes the base address of the array to the function.
        return 0;
    
    }
    

    【讨论】:

    • 您只是发布了代码转储而不是解释问题,并且您做出了毫无根据和不相关的假设。
    • @JosephSible,是的,我现在明白了,我误读了这个问题,对此感到抱歉。我会更正我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多