c++编译错误怎么办?

 我来答
N_0_1
高粉答主

推荐于2018-12-24 · 关注我不会让你失望
知道大有可为答主
回答量:8628
采纳率:47%
帮助的人:828万
展开全部
C++不支持动态数组,比如像Basic中的Redim,Pascal中的SetLength等
C++中的动态数组是以动态内存分配来实现的,即用new和delete动态分配和删除数组空间
所以像int Rev[len];这样的定义是非法的

根据楼主说的main函数中可以编译,那可能是在main函数中,len被赋予了常量,这样C++能够根据语法判断出实际是类似于int Rev[10]这样的定义,所以是可以编译通过的

但是在函数中,上述定义是不行的,因为函数调用时,编译器无法判断传递来的参数是否是编译期的常量,这样就构成了动态数组的定义,这在C++中是非法的
################################################
我刚测试了你的代码,是MinGW编译器,这是Dev Cpp内置的编译器:
错误应该是
void Rev(int Data,const int &len)这一行,这和你的声明
void Rev(int Data[],const int &len)是不同的。
我想你的本意应该是
void Rev(int Data[],const int &len)

这也就解释了在main中正确的原因,因为在main中定义的
int Data[len];是正确的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式