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

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

原因及解决办法:

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

例如:

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐