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

C++中如何将int变量赋值给int数组?及数组下标错误排查

问题分析与解决

1. 报错原因:invalid types ‘int[int]’ for array subscript

你定义的prices是一维int数组:

int prices[7];

但代码里却把它当成二维数组使用(prices[i][0]、prices[i][1])——一维数组的元素是int类型,无法再通过第二个下标访问,这直接导致了类型错误。

如果你的需求是存储「客户编号+对应总价」这类二维数据,建议改用你已经定义好的resumen[5][2](5行2列的int二维数组,刚好匹配你要存储的两个值)。修正后的代码示例:

// 替换原来的prices错误行
resumen[i][0] = i + 1; // 存储客户编号
resumen[i][1] = prices[opc - 1] * cantidad; 
// 注意:prices应该是对应商品的单价数组,用opc-1做下标,匹配products的0-6索引

另外,你原来的字符串拼接代码存在逻辑错误:""+cantidad+products[0]不会把int转成字符串,而是会执行指针偏移运算,得到错误的字符串结果。正确的写法是用std::to_string()转换int为字符串,还能简化冗余的if-else链:

// 替代7个if-else分支
clients[i][1] = std::to_string(cantidad) + products[opc - 1];

2. C++中int变量赋值给int数组的方法

(1)单元素直接赋值

通过数组下标直接给对应位置赋值:

  • 一维数组:
int arr[5];
int num = 10;
arr[0] = num; // 把num的值赋给数组第0个元素
arr[2] = 20; // 直接给元素赋字面量int
  • 二维数组:
int arr[3][2];
int val = 5;
arr[1][0] = val; // 赋值给第1行第0列的元素
arr[0][1] = 15; // 直接赋字面量

(2)初始化阶段批量赋值

数组声明时用列表初始化:

int arr[5] = {1, 2, 3, 4, 5}; // 逐个给元素赋值
int arr2[3][2] = {{10,20}, {30,40}, {50,60}}; // 二维数组的列表初始化

如果初始化列表元素数量少于数组大小,剩余元素会被默认初始化为0。

(3)循环批量赋值

通过循环给数组元素批量赋值(适合重复逻辑或全量赋值):

int arr[10];
int baseVal = 7;
for(int j = 0; j < 10; j++){
    arr[j] = baseVal + j; // 每个元素赋值为baseVal加下标值
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:31:10