【发布时间】:2016-09-22 08:03:13
【问题描述】:
我查看了所有其他类似主题的帖子,但没有任何帮助,所以请不要标记为重复。
我在main() 中定义const int SIZE = 20;。然后,我将其作为参数传递给我的函数 Mode:
int* Mode(int* numbers, int & mode, const int SIZE)
{
int occurences[SIZE];
// Calcualte mode
}
但是,我得到了错误,expression must have a constant value。
我的函数调用(在 main 中)如下所示:
int* occurencesPtr = Mode(numbersPtr, mode, SIZE);
SIZE 被定义在文字 20 的开头。
我了解该错误是因为函数的 SIZE 版本仅在调用函数时获取其值 (?),但我不知道如何解决此问题。
我什至尝试将const int * const SIZEPtr = &SIZE 传递给函数,但这也不起作用。帮忙?
编辑:我不是试图使用可变大小!请注意,我在任何地方都制作了SIZE 和const!我只想使用相同的 SIZE 常量来声明我的数组。
编辑:动态数组不是我需要的。我只想要一个普通的命名数组,用传递给函数的 constant 大小值定义。
【问题讨论】:
-
100% 重复。使用您的确切标题进行搜索。在答案中寻找“动态”。
-
可变长度数组不是标准 C++。虽然一些编译器支持它们作为扩展,但不能保证在切换到不同的工具链时它会可用。
-
int *occurrences = new int[SIZE]; .... ;删除(发生);
-
在标准 C++ 中无法实现您想要的方式。
-
(原因是new int[SIZE];把数组分配在堆里,而int出现[SIZE];把它分配到栈里(即在函数的局部变量中间))
标签: c++ arrays pointers constants