C: Der Unterschied zwischen der Argumentübergabe „By Value“ und „By Reference“
In C die Interaktion zwischen einem Parameter und seinem Das Argument wird durch den Typ des Parameters bestimmt. Während die Wertübergabe typisch ist, bietet die Referenzübergabe in bestimmten Szenarien deutliche Vorteile.
Begründung hinter der Referenzübergabe
Die Referenzübergabe dient zwei Hauptzwecken:
Beispiel: Ändern des Argumentwerts
Betrachten Sie die folgende Funktion:
<code class="cpp">void get5and6(int *f, int *s) { *f = 5; *s = 6; }</code>
Hier werden Zeiger verwendet, um Argumente per Referenz zu übergeben. Durch Aufrufen der Funktion mit:
<code class="cpp">int f = 0, s = 0; get5and6(&f, &s);</code>
f und s werden auf 5 bzw. 6 gesetzt, da die Funktion die Werte ändert, auf die die Referenzen zeigen.
Alternativ durch Referenzen liefert direkt das gleiche Ergebnis:
<code class="cpp">void get5and6(int &f, int &s) { f = 5; s = 6; }</code>
Der Aufruf der Funktion mit:
<code class="cpp">int f = 0, s = 0; get5and6(f, s);</code>
erzeugt den gleichen Effekt.
Beispiel: Leistungsoptimierung
Stellen Sie sich eine Funktion vor, die den Spielstatus speichert:
<code class="cpp">void SaveGame(GameState& gameState) { gameState.update(); gameState.saveToFile("save.sav"); }</code>
Ohne Referenzübergabe würde eine Kopie des GameState-Objekts innerhalb der Funktion erstellt, was möglicherweise erhebliche Ressourcen verbraucht. Durch die Referenzübergabe wird nur die Adresse des Objekts kopiert, wodurch der Aufwand für das Kopieren seines großen Inhalts vermieden wird.
Wann Referenzen verwendet werden sollten
Die Referenzübergabe ist wann von Vorteil :
Konst Referenzen
Const-Referenzen stellen sicher, dass das Argument innerhalb der Funktion nicht geändert werden kann. Sie werden verwendet, um den schreibgeschützten Zugriff auf bestimmte Parameter zu erzwingen.
Das obige ist der detaillierte Inhalt von## C: Wann sollten Sie Argumente nach Wert oder nach Referenz übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!