为什么用作数组大小的函数的常量参数会产生错误?

Imr*_*ana 2 c++ arrays function

当我在C++中使用函数的常量参数作为数组大小时,它给出了"需要常量表达式"错误:
在此输入图像描述

所以编译器不考虑m作为常量对象,这意味着我可以更改m函数内部的值,但是当我尝试增加m它的值时,给出"无法修改const对象"错误:
在此输入图像描述

这对我来说真的很模糊.任何人都可以解释我的错误吗?

GMa*_*ckG 5

const 实际上并不意味着"这个值是常数",但是,"你不能改变这个值."

有了这个,应该清楚为什么后面的代码无法编译,但前者不能.即使你给它一个默认值5,也不保证它是五,所以你没有常量,所以你不能创建一个数组.但是类型仍然存在const,所以你无法改变它.

也就是说,因为C99你可以拥有可变长度数组,所以这实际上很好.(在C++中它是不行的.)你的编译器似乎太旧了,无法支持C99.(我强烈推荐使用最新的GCC.)

  • @Imran:在CodeBlocks中,你用`-ansi`或`-std = c ++ 98`标志进行编译?有警告吗? (2认同)