C++二维数组定义出现问题.

char choice;
int x,y;
cin>>choice;
if(choice=='1'){
x=5;
y=8;}
else if(choice=='2'){
x=10;
y=10;}
else if(choice=='3'){
x=25;
y=25;
}
char dt[x][y]
你们懂我意思吧
但是出来俩错误
cannot allocate an array of constant size 0.
expected constant expression.
**

6个回答

有的编译器不支持运行时分配数组大小的写法。

那么就要用
char * dt = new char[x][y];
或者 new char[x * y]

或者换支持的编译器

不能用变量定义数组大小

数组的定义不应当出现变量,应该用常量或常量表达式来确定数组的大小,或者定义指针灵活的实现数组的存储和表示

静态数组下标不可以为变量,想实现动态控制数组大小可以用new动态申请空间

用常量来定义数组长度,或者可以写一个动态数组!

char dt[x][y]这句话改一改,不能这样定义数组
c的话加上malloc的头文件,试试下面的写法
c++的话类似,用new和delete就行

char** dt
dt = (int**)malloc(sizeof(int*)*x);
for(int i = 0; i < x; i++) {
     dt[i] = (int*)malloc(sizeof(int)*y);
}

for(int i = 0; i < x; i++) {
     free(dt[i]);
}
free(dt);
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问