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
Freigeben: 2024-10-29 08:05:30
Original
533 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Dies wird Folgendes ausgeben:

1 3 3 8 4 1 3 4 3 0
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren

Dies gibt außerdem Folgendes aus:

1 3 3 8 4 1 3 4 3 0
Nach dem Login kopieren
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage