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

C语言二维数组如何按行优先规则在最小空闲索引处追加元素

现有代码存在的问题

  • 未在找到第一个空位置后终止遍历:当前逻辑会把数组中所有值为0的位置都覆盖为传入的val,不符合仅追加单个元素的需求
  • 未使用传入的expand_row参数:没有实现数组满时的扩容逻辑,无法处理二维数组所有位置都已被占用的场景
  • 缺少返回值:函数声明的返回值类型为imgr_result_t,但代码中没有任何return语句,会触发编译错误
  • 未做空指针校验:没有校验传入的im指针是否合法,访问空指针会直接导致程序崩溃

修正后的实现代码

imgr_result_t imgr_append(imgr_t* im, int expand_row, int val)
{
    // 参数合法性校验
    if (im == NULL || im->pixels == NULL) {
        return IMGR_ERR_INVALID_PARAM; // 替换为项目中实际定义的参数错误码
    }
    // 按行优先、列从小到大规则查找第一个空位
    for(int i = 0; i < im->rows; i++) {
        for(int j = 0; j < im->cols; j++) {
            if(im->pixels[i][j] == 0) {
                im->pixels[i][j] = val;
                return IMGR_SUCCESS; // 写入完成直接返回,终止后续遍历
            }
        }      
    }
    // 数组已满时处理扩容逻辑
    if (expand_row) {
        // 此处补充实际扩容逻辑:为新行分配内存、更新im->rows计数
        // 写入新行的第一个位置
        im->pixels[im->rows - 1][0] = val;
        return IMGR_SUCCESS;
    }
    // 无需扩容时返回数组已满错误
    return IMGR_ERR_FULL;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 11:39:02