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

C++不使用vector和指针如何创建行数为随机值的二维数组

问题原因

标准C++不支持变长数组(VLA),即数组的大小必须是编译期就能确定的常量,你代码里的numOfRows是运行时调用随机函数才生成的变量,不符合要求,因此编译器抛出「表达式必须为常量值」的报错。只有部分编译器(如GCC)提供了变长数组的非标准扩展支持,依赖这类扩展会导致代码跨编译器兼容问题。

可行实现方案

因为你的行数取值区间固定为30~40,最大行数仅为40,直接声明行数为最大值的固定大小二维数组即可,实际使用时只访问前numOfRows行,不需要用到指针或vector:

const int COLUMNS = 20;
// 直接声明行数为区间最大值的固定大小数组,编译期可确定大小
const int MAX_ROWS = 40;
int numOfRows = genNumInRange(30, 40);
int array[MAX_ROWS][COLUMNS];

后续使用数组时,遍历的终止条件写i < numOfRows即可,不会用到多余的行,额外占用的内存可以忽略不计(40*20的int数组仅占用3200字节)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:06:03