Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich ein Array von einer Funktion in C zurückgeben, ohne Daten zu verlieren?

Wie kann ich ein Array von einer Funktion in C zurückgeben, ohne Daten zu verlieren?

DDD
DDDOriginal
2024-10-29 20:18:29288Durchsuche

 How to Return an Array from a Function in C   without Losing Data?

Arrays von einer Funktion in C zurückgeben

Bei der Rückgabe eines Arrays von einer Funktion in C ist es wichtig, die Feinheiten der Speicherverwaltung zu verstehen . Standardmäßig werden lokale Arrays, die auf dem Stapel innerhalb der Funktion zugewiesen sind, zerstört, wenn die Funktion beendet wird. Dieses Verhalten führt zu undefiniertem Verhalten, wenn versucht wird, außerhalb der Funktion auf diese Arrays zuzugreifen.

Im bereitgestellten Code wird ein Array c auf dem Stapel innerhalb der Uni-Funktion erstellt:

<code class="c++">int c[10];</code>

Obwohl dieses Array in der Funktion erfolgreich mit Werten gefüllt wird, gehen die Werte verloren, sobald die Funktion zurückkehrt und das Array zerstört wird. Dies führt zu der unerwarteten Ausgabe, auf die Sie stoßen.

Um dieses Problem zu lösen, können Sie zwei alternative Ansätze anwenden:

Verwenden eines Zeigers:

Ändern die Uni-Funktion, um einen Zeiger auf das zugewiesene Array zurückzugeben:

<code class="c++">int* uni(int *a,int *b)
{
    int* c = new int[10]; // Allocate array on heap
    int i = 0;
    // ...same code as before...
    return c;
}</code>

Im Wesentlichen sollten Sie für die Freigabe des im Heap zugewiesenen Speichers verantwortlich sein:

<code class="c++">int main()
{
    // ...same code as before...
    delete[] c; // Deallocate array from heap
    // ...
}</code>

Using eine Struktur:

Ein anderer Ansatz besteht darin, das Array in eine Struktur einzuschließen und die Struktur zurückzugeben:

<code class="c++">struct myArray {
    int array[10];
};

myArray uni(int *a,int *b)
{
    myArray c;
    int i = 0;
    // ...same code as before...
    return c;
}</code>

In diesem Fall wird die Struktur als Wert zurückgegeben, wodurch eine Kopie von sichergestellt wird Das Array wird in der Hauptfunktion erstellt. Strukturrückgabewerte können aufgrund der Wertesemantik von Strukturen effizient kopiert werden.

Das obige ist der detaillierte Inhalt vonWie kann ich ein Array von einer Funktion in C zurückgeben, ohne Daten zu verlieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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