Heim > Backend-Entwicklung > C++ > Wie kann ich ein 2D-Array ordnungsgemäß von einer C-Funktion zurückgeben?

Wie kann ich ein 2D-Array ordnungsgemäß von einer C-Funktion zurückgeben?

Mary-Kate Olsen
Freigeben: 2024-12-08 06:47:10
Original
945 Leute haben es durchsucht

How to Properly Return a 2D Array from a C   Function?

Gibt 2D-Arrays in C zurück

Das Zurückgeben eines 2D-Arrays aus einer Funktion in C kann eine knifflige Aufgabe sein. Ein Ansatz, wie durch den bereitgestellten Code demonstriert, versucht, ein 2D-Array mithilfe des unten gezeigten Codes zurückzugeben, aber dieser Ansatz ist nicht geeignet.

int **MakeGridOfCounts()
{
    int cGrid[6][6] = {{0, }, {0, }, {0, }, {0, }, {0, }, {0, }};
    return cGrid;
}
Nach dem Login kopieren

Stattdessen besteht ein praktikabler Ansatz darin, einen Zeiger auf das zu erstellen und zurückzugeben 2D-Array mit dynamischer Speicherzuweisung. Lassen Sie uns anhand eines verbesserten Codebeispiels untersuchen, wie dies geschieht:

#include <cstdio>

int** create2DArray(unsigned height, unsigned width) { .... } 
Nach dem Login kopieren
  1. Erstellen Sie das 2D-Array ( create2DArray() ):

    • Zuerst erstellen wir einen Zeiger auf das 2D-Array und einen Zeiger auf jede einzelne Person Zeile.
    • Wir weisen Speicher für die Zeilen zu und dann für jede Zeile Speicher für die Spalten.
int** array2D = new int*[height];
for (int h = 0; h < height; h++) {
   array2D[h] = new int[width];
   .
   .
   .
}
Nach dem Login kopieren
  1. Das Array zurückgeben (create2DArray() ):

    • Sobald das Array erstellt ist, wird der Zeiger auf die erste Zeile (array2D) zurückgegeben. Dieser Zeiger stellt das gesamte Array dar.
  2. Speicher bereinigen (main() ):

    • Die Freigabe ist von entscheidender Bedeutung Der dem 2D-Array zugewiesene Speicher, sobald er nicht mehr benötigt wird. Dazu gehört das Löschen des Speichers jeder Zeile und dann des Zeigers auf die erste Zeile, um Speicherlecks zu verhindern.
for (int h = 0; h < height; h++) {
  delete [] array2D[h]; 
}
delete [] array2D;
Nach dem Login kopieren

Dieser Ansatz gewährleistet eine ordnungsgemäße Speicherverwaltung und bietet eine Möglichkeit, a zurückzugeben 2D-Array aus einer Funktion in C .

Das obige ist der detaillierte Inhalt vonWie kann ich ein 2D-Array ordnungsgemäß von einer C-Funktion zurückgeben?. 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