」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何從 C++ 函數傳回數組?

如何從 C++ 函數傳回數組?

發佈於2024-12-22
瀏覽:701

How to Return an Array from a Function in C  ?

從 C 中的函數傳回陣列

您可以使用指標從 C 中的函數傳回陣列。但是,如果數組未正確分配,這可能會導致問題。

在您的範例中,您試圖傳回在堆疊上指派的陣列。這可能會在函數返回時導致未定義的行為。

要避免此問題,您可以使用 new 運算子在堆上指派陣列。然後,您可以傳回指向已指派數組的指標。

int* uni(int *a, int *b) {
    int *c = new int[10];
    int i = 0;
    while (a[i] != -1) {
        c[i] = a[i];
        i  ;
    }
    for (; i 

然後您可以使用傳回的指標來存取陣列。

int main() {
    int a[10] = {1, 3, 3, 8, 4, -1, -1, -1, -1, -1};
    int b[5] = {1, 3, 4, 3, 0};
    int *c = uni(a, b);
    for (int i = 0; i 

這將輸出:

1 3 3 8 4 1 3 4 3 0

另一個選項是使用結構體來包裝陣列。這可以按值返回,並且將複製結構,包括其中內部的陣列。

struct myArray {
    int array[10];
};

myArray uni(int *a, int *b) {
    myArray c;
    int i = 0;
    while (a[i] != -1) {
        c.array[i] = a[i];
        i  ;
    }
    for (; i 

這也將輸出:

1 3 3 8 4 1 3 4 3 0
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3