[英]How to generate an Array with a variable as size?
我正在嘗試使用此函數將數組作為參數傳遞。 在函數中,我讓用戶輸入數組的大小,以及所述數組中的值。 我想不通的是如何在 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<int>
代替:
#include <vector>
std::vector<int> arrayFunction(){
int arraySize;
cout << "Enter length of array: " << endl;
cin >> arraySize;
std::vector<int> result(arraySize);
for(int i = 0; i < arraySize; i++)
{
cout << "Enter value #" << (i + 1) << endl;
cin >> result[i];
}
return result;
}
如果您無權訪問std::vector
,則需要構建類似使用動態分配數組的內容:
int* arrayFunction() {
...
// instead of the std::vector<int> line, you can just do this:
int* result = new int[arraySize];
...
}
但你需要確保調用delete [] array;
當你完成記憶時。 std::vector
將自動執行此操作,因此它通常是動態數組的更安全方法。
使用矢量會很棒。 但是你也可以使用傳統的指針來實現這個所謂的動態數組。 然后可以在運行時而不是編譯時指定此數組大小。
只是從你的代碼中修改了一點:
#include<iostream>
using namespace std;
void arrayGenerator(int* , int );
void arrayPrinter(const int* pArray, int arraySize);
int main() {
int arrayLength;
cout << "Enter length of array: " << endl;
cin >> arrayLength;
int* pArray = new int[arrayLength];
arrayGenerator(pArray, arrayLength);
arrayPrinter(pArray, arrayLength);
delete [] pArray;
return 0;
}
void arrayGenerator(int* pArray, int arraySize) {
for(int i = 0; i < arraySize; i++)
{
cout << "Enter value #" << i + 1 << endl;
cin >> pArray[i];
}
}
void arrayPrinter(int* pArray, int arraySize) {
cout << "This is the given array: \n";
for (int i = 0; i < arraySize; i++)
cout << i << " ";
cout << endl;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.