簡體   English   中英

如何生成一個以變量為大小的數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM