簡體   English   中英

如何在 function 中聲明一個數組,該數組在 c++ 中返回一個數組

[英]How can an declare an array in a function that returns an array in c++

// 將數字轉換為數組的函數

int *initialiser(int number)
{
    int array[20];

    for (int i = 19; i >= 0; i--)
    {
        array[i] = number % 10;
        number /= 10; // number = number/10
    }

    return array;
}

//我得到這個錯誤

primaryAddSub.cpp: In function 'int* initialiser(int)':
primaryAddSub.cpp:21:9: warning: address of local variable 'array' returned [-Wreturn-local-addr]
     int array[20];
         ^~~~~

我可以使用 static int array[20]; 但 function 每次調用時都會返回相同的結果。

正如評論所說,更喜歡使用std::vector而不是int* 這是如何工作的一個例子:

std::vector<int> initialiser(int number)
{
    std::vector<int> array;

    // ... fill up array

    return array;
}

如果您絕對想返回一個int* ,那么正如錯誤所說,您將返回一個指向局部變量的指針。 您需要分配 memory 代替:

int *initialiser(int number)
{
    int *array = new int[20];

    // ... fill up array 

    return array;
}

完成后不要忘記delete此 memory。 此外,調用者確實無法知道數組中有多少元素,因此它們可能會越界讀/寫。

一般來說,這是容易出錯的,所以更喜歡第一個版本,這樣你就不必擔心刪除任何東西,也不太可能犯越界錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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