Heim  >  Artikel  >  Backend-Entwicklung  >  ## C: Wann sollten Sie Argumente nach Wert oder nach Referenz übergeben?

## C: Wann sollten Sie Argumente nach Wert oder nach Referenz übergeben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-30 21:44:02877Durchsuche

##  C  : When Should You Pass Arguments by Value vs. by Reference?

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:

  • Ändern des Argumentwerts: Referenzparameter ermöglichen es Funktionen, den Wert ihrer Argumente zu ändern. Im Gegensatz dazu erstellen Wertparameter Kopien von Argumenten, sodass alle Änderungen innerhalb der Funktion isoliert werden.
  • Leistungsverbesserung: Durch die Übergabe als Referenz entfällt die Notwendigkeit, ein Objekt in die Funktion zu kopieren, was erheblich sein kann Verbessern Sie die Leistung, insbesondere bei großen oder komplexen Objekten.

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 :

  • Das übergebene Objekt ist groß oder komplex.
  • Die Funktion wird häufig aufgerufen (z. B. in einer Schleife).

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!

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