You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言二维数组报assignment makes integer from pointer without a cast警告解决

警告触发原因
  • 核心语法错误:C语言二维数组的元素访问语法为数组名[行下标][列下标],你的代码中错误使用了my2DArray[row,col]的写法。此处逗号是C语言的逗号运算符,整个括号内的表达式最终取值为最后一个操作数col,相当于你实际写的是my2DArray[col],这个值是指向二维数组第col行的指针,你把指针直接加到int类型的累加变量上,就触发了「assignment makes integer from pointer without a cast」的警告。
  • 附带逻辑错误:
    1. findMeanLine、findMeanCol函数内定义的avgLine、avgCol是栈内存临时数组,函数执行结束后内存就会被回收,无法正常返回结果。
    2. 函数返回值写为avgLine[n]、avgCol[n]属于数组越界访问,变长数组avgLine[n]的合法下标范围是0到n-1。
    3. main函数中avgLine[n] = findMeanLine(...)同样是越界访问,同时你原本需要获取所有行/列的平均值,用单个float作为返回值的设计完全不符合需求。
修复方案
  1. 修正所有二维数组元素访问的语法,把my2DArray[row,col]全部替换为my2DArray[row][col]
  2. 调整求行/列平均值的函数设计,把main中提前定义好的平均值数组作为参数传入函数直接填充,不需要返回值:
    原函数声明修改为:
    void findMeanLine(int n ,int my2DArray[][n], float avgLine[]);
    void findMeanCol(int n ,int my2DArray[][n], float avgCol[]);
    
  3. 对应修改函数实现:
    void findMeanLine(int n ,int my2DArray[][n], float avgLine[])
    {
        int sumRow=0;
        int row,col;
        for (row=0; row <n ; row++)
        {
            sumRow=0;
            for (col=0 ; col < n ; col++)
            {
                sumRow+=my2DArray[row][col]; 
            }
            avgLine[row]=(float)sumRow/n;
        }
    }
    
    void findMeanCol(int n ,int my2DArray[][n], float avgCol[])
    {
        int row,col;
        for (col=0 ; col < n ; col++)
        {
            int sumCol=0;
            for (row=0; row < n ; row++)
            {
                sumCol+=my2DArray[row][col];
            }
            avgCol[col]=(float)sumCol/n;
        }
    }
    
  4. 调整main函数中的调用逻辑,删除越界赋值的写法:
    // 计算每行平均值
    findMeanLine(n, my2DArray, avgLine);
    // 打印每行平均值
    showPinDouble1D(n,avgLine);
    // 计算每列平均值
    findMeanCol(n ,my2DArray, avgCol);
    // 打印每列平均值
    showPinDouble1D(n,avgCol);
    

修改完成后重新编译即可消除警告,程序也能正常输出行列平均值和对角线求和结果。

内容的提问来源于stack exchange,提问作者Vasilis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:18:00