Heim >Backend-Entwicklung >C++ >Wie gebe ich ein Array von einer Funktion in C zurück?

Wie gebe ich ein Array von einer Funktion in C zurück?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-29 08:05:30539Durchsuche

How to Return an Array from a Function in C  ?

Arrays von einer Funktion in C zurückgeben

Sie können ein Array von einer Funktion in C zurückgeben, indem Sie Zeiger verwenden. Dies kann jedoch zu Problemen führen, wenn das Array nicht ordnungsgemäß zugewiesen ist.

In Ihrem Beispiel versuchen Sie, ein Array zurückzugeben, das auf dem Stapel zugewiesen ist. Dies kann zu undefiniertem Verhalten führen, wenn die Funktion zurückkehrt.

Um dieses Problem zu vermeiden, können Sie das Array mit dem neuen Operator auf dem Heap zuweisen. Sie können dann einen Zeiger auf das zugewiesene Array zurückgeben.

<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>

Sie können dann den zurückgegebenen Zeiger verwenden, um auf das Array zuzugreifen.

<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>

Dies wird Folgendes ausgeben:

1 3 3 8 4 1 3 4 3 0

Eine andere Alternative besteht darin, eine Struktur zum Umschließen des Arrays zu verwenden. Dies kann als Wert zurückgegeben werden, und die Struktur wird kopiert, einschließlich des darin enthaltenen Arrays.

<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>

Dies gibt außerdem Folgendes aus:

1 3 3 8 4 1 3 4 3 0

Das obige ist der detaillierte Inhalt vonWie gebe ich ein Array von einer Funktion in C zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn