„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie gibt man in C++ ein Array von einer Funktion zurück?

Wie gibt man in C++ ein Array von einer Funktion zurück?

Veröffentlicht am 22.12.2024
Durchsuche:282

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 mithilfe von Zeigern zurückgeben. 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. Anschließend können Sie einen Zeiger auf das zugewiesene Array zurückgeben.

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 

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

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 

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.

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 

Dies wird auch Folgendes ausgeben:

1 3 3 8 4 1 3 4 3 0
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3