【发布时间】:2021-09-12 18:35:04
【问题描述】:
我正在尝试使用此函数将数组作为参数传递。在函数中,我让用户输入数组的大小,以及所述数组中的值。我想不通的是如何在 main 中声明变量以允许我在 main 中使用该函数,更具体地说,如何在事先不知道大小的情况下在 main 中声明数组变量(用户在函数中输入大小)。
void arrayFunction(int array1[], int arraySize);
int main() {
int arrayLength;
int arrayMain[];
cout << "Enter length of array: " << endl;
cin >> arrayLength;
arrayFunction(arrayMain, arrayLength);
return 0;
}
void arrayFunction(int array1[], int arraySize)
{
cout << "Enter length of array: " << endl;
cin >> arraySize;
for(int i = 0; i < arraySize; i++)
{
cout << "Enter value #" << i + 1 << endl;
cin >> array1[i];
}
}
【问题讨论】:
-
你不能。如果您在编译时不知道大小,请使用
std::vector。参见例如stackoverflow.com/questions/10865861/… -
C++ 要求数组的大小是编译时常量表达式。理由是普通程序员(意思是不编写标准库模块时)应该使用
std::vector。 -
最简单的方法是使用
std::vector。困难的方法是编写一个程序,当知道大小时,它会将源代码输出到编译器,然后运行生成的可执行文件。 (困难的方式类似于 Oracle 如何为某些查询生成代码以使其运行得非常快。)