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

C++如何通过指针实现二维数组b的第二列与a的第二列实时同步

错误原因分析

你原有写法存在两个核心问题:

  1. a[x][1]本身就是int16_t类型的数值,不是指针,对它执行*解引用属于语法错误,无法正常编译。
  2. 你定义的b是存储int16_t值的二维数组,初始化阶段只是把a对应位置的值拷贝到b的存储空间,两个数组内存完全独立,后续修改a自然不会对b产生影响。
可选实现方案

方案1:指针实现自动同步

如果希望修改a的第二列后b无需手动操作就能自动同步,可以调整b的类型,将第二列直接指向a对应元素的内存地址:

#include <stdint.h>

int16_t a[3][2] = {
  {30,  40},
  {31,  41},
  {32,  42}
};

// b的元素为int16_t指针类型,第一列存常量的地址,第二列直接指向a对应元素
int16_t* b[3][2] = {
  {&(int16_t){50},  &a[0][1]},
  {&(int16_t){51},  &a[1][1]},
  {&(int16_t){52},  &a[2][1]}
};

使用时只需对元素加*取值即可:*b[0][0]对应值50,*b[0][1]直接取a[0][1]的实时值,修改a的第二列后b对应位置会自动同步更新。

方案2:同步函数适配原有类型

如果你不想修改b的原有int16_t二维数组类型,无需调整现有使用b的代码,可以封装同步函数,每次修改a的第二列后手动调用一次即可完成同步:

#include <stdint.h>

int16_t a[3][2] = {
  {30,  40},
  {31,  41},
  {32,  42}
};

int16_t b[3][2] = {
  {50,  40},
  {51,  41},
  {52,  42}
};

// 同步b的第二列与a的第二列,行数可根据实际需求调整为参数传入
void sync_b_col2() {
    for(int i = 0; i < 3; i++) {
        b[i][1] = a[i][1];
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:36:03