Arrays aus einer Funktion in c ++ zurückgeben

Ich versuche, ein Array von einer Funktion zurückzugeben:

#include <iostream>

using namespace std;
int* uni(int *a,int *b)
{
    int c[10];
    int i=0;
    while(a[i]!=-1)
    {
        c[i]=a[i];
        i++;
    }
    for(;i<10;i++)
        c[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};
    int *c=uni(a,b);
    for(int i=0;i<10;i++)
        cout<<c[i]<<" ";
    cout<<"\n";

    return 0;
}

Ich übergebe zwei Arrays von meinemmain() in meinuni() Funktion. Dort erstelle ich ein neues Arrayc[10] was ich zurück zu meinemmain(). In meinemuni() Funktion Ich versuche, die nicht negativen Zahlen in den beiden Arrays zusammenzuführena undb.

Aber ich bekomme so etwas als Ausgabe.

1 -1078199700 134514080 -1078199656 -1216637148 134519488 134519297 134519488 8 -1078199700 

Wheas, wenn ich versuche, die Werte von @ zu druckc[10] in demuni() Funktion gibt die korrekten Werte aus. Warum passiert das?? Hat das etwas mit dem Stack zu tun? Weil ich versucht habe, nach meinem Fehler zu suchen und ein paar Stellen im Stapelüberlauf gefunden habe, an denen es heißt, dassdo not allocate on stack aber ich konnte es nicht verstehen.

Weitere es wäre sehr einfach, wenn ich mein Array global zuweisen würde, aber wenn dies der Fall ist, dann soll alles global deklariert werden? Warum machen wir uns überhaupt Sorgen, Zeiger von Funktionen zu übergeben? (Ich habe ein Kapitel in meinem Buch, in dem ich Hinweise weitergeben kann.)

Antworten auf die Frage(6)

Ihre Antwort auf die Frage