关于c++报错:“表达式必须含有常量值” 的原因和解决办法

在用vs2019运行一段代码时显示这样的错误:
编译器显示“表达式必须含有常量值”的错误

原因及解决办法:

因为[ndiffficulty+1]不是一个常数,需要运行时才能确定分配内存的大小。
最新的C++标准是允许char cstr[n]中n不是常量,但不推荐这样用,所以,如果当分配内存大小需要在运行时才能确定时,一般使用动态分配内存。

例如:

将上诉代码修改为:
char* cstr=new char[nDifficulty + 1];
并在数组使用完毕后释放内存:
delete[]cstr; cstr=NULL;
运行就没有报错了

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐