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

C语言如何为二维数组的子数组正确赋值?

报错原因

C 语言不支持直接对已定义的数组使用大括号语法做整体赋值,{row, col, symbol}的初始化写法仅能在数组声明定义时使用。moves[moveCount]作为子数组的数组名,是不可修改的左值,因此直接赋值会抛出你遇到的错误。

解决方法
  • 方案1:逐个元素赋值(全版本兼容,推荐)
    直接给子数组的三个位置分别赋值即可,写法简单直观,无额外依赖:

    moves[moveCount][0] = row;
    moves[moveCount][1] = col;
    moves[moveCount][2] = symbol;
    // 赋值完成后更新落子计数,注意不要超过99避免数组越界
    moveCount++;
    
  • 方案2:memcpy配合复合字面量(仅支持C99及以上标准)
    如果需要实现单行赋值,可以借助内存拷贝函数和C99的复合字面量实现:

    // 需要先引入string.h头文件
    #include <string.h>
    
    memcpy(moves[moveCount], (char[3]){row, col, symbol}, sizeof(moves[moveCount]));
    moveCount++;
    

注意:两种方案都需要保证moveCount的取值在0~99范围内,避免越界访问引发未定义行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:45:06