Heim >Backend-Entwicklung >C++ >Wie kann ich ein 2D-Array von einer C-Funktion zurückgeben?
In C ist es bei der Arbeit mit Arrays und Funktionen oft notwendig, mehrdimensionale Arrays zurückzugeben. Dieser Artikel befasst sich mit der spezifischen Frage, wie man ein 2D-Array von einer Funktion in C zurückgibt.
Der bereitgestellte Codeversuch, MakeGridOfCounts(), zielt darauf ab, ein 2D-Array zurückzugeben, scheitert jedoch aufgrund des Array-Verfalls. Um ein 2D-Array ordnungsgemäß zurückzugeben, muss stattdessen ein Zeiger auf das Array zurückgegeben werden.
Um die Einschränkungen statischer Arrays zu überwinden, bietet C eine Möglichkeit, mehrdimensionale Arrays zu erstellen dynamisch. Der folgende Code zeigt, wie ein neues 2D-Array auf dem Heap erstellt wird:
int** create2DArray(unsigned height, unsigned width) { int** array2D = 0; array2D = new int*[height]; for (int h = 0; h < height; h++) { array2D[h] = new int[width]; for (int w = 0; w < width; w++) { // fill in some initial values array2D[h][w] = w + width * h; } } return array2D; }
Diese Funktion benötigt zwei Parameter, Höhe und Breite, und gibt einen Zeiger auf ein neu erstelltes 2D-Array der Größe [Höhe x Breite] zurück ].
Um das dynamisch erstellte 2D-Array von einer Funktion zurückzugeben, wird ein Zeiger auf das Array zurückgegeben. Dieser Zeiger zeigt auf das erste Element des Arrays und bietet Zugriff auf das gesamte Array:
int** MakeGridOfCounts() { int** cGrid = create2DArray(6, 6); return cGrid; }
Bei der Arbeit mit dynamisch zugewiesenen Arrays ist es wichtig, daran zu denken, den zu bereinigen Erinnerung nach Gebrauch. Andernfalls kann es zu Speicherlecks kommen:
for (int h = 0; h < height; h++) { delete[] my2DArray[h]; } delete[] my2DArray; my2DArray = 0;
Indem Sie die oben beschriebenen Techniken befolgen, können Sie effektiv 2D-Arrays aus Funktionen in C zurückgeben. Denken Sie daran, das Array dynamisch zu erstellen, um Einschränkungen durch statische Arrays zu vermeiden und den zugewiesenen Speicher nach der Verwendung zu bereinigen.
Das obige ist der detaillierte Inhalt vonWie kann ich ein 2D-Array von einer C-Funktion zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!