首頁 >後端開發 >C++ >如何從 C 函數返回數組?

如何從 C 函數返回數組?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-29 08:05:30541瀏覽

How to Return an Array from a Function in C  ?

從 C 中的函數傳回陣列

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

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

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

<code class="C++">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 < 10; i++) {
        c[i] = b[i - 5];
    }
    return c;
}</code>

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

<code class="C++">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 < 10; i++) {
        cout << c[i] << " ";
    }
    cout << "\n";
    delete[] c;
    return 0;
}</code>

這將輸出:

1 3 3 8 4 1 3 4 3 0

另一個選擇是使用結構體來包裝陣列。這可以透過值返回,並且結構將被複製,包括其內部的數組。

<code class="C++">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 < 10; i++) {
        c.array[i] = b[i - 5];
    }
    return c;
}

int main() {
    int a[10] = {1, 3, 3, 8, 4, -1, -1, -1, -1, -1};
    int b[5] = {1, 3, 4, 3, 0};
    myArray c = uni(a, b);
    for (int i = 0; i < 10; i++) {
        cout << c.array[i] << " ";
    }
    cout << "\n";
    return 0;
}</code>

這也會輸出:

1 3 3 8 4 1 3 4 3 0

以上是如何從 C 函數返回數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn