Heim > Backend-Entwicklung > C++ > ## 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
Freigeben: 2024-10-30 21:44:02
Original
942 Leute haben es durchsucht

##  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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Der Aufruf der Funktion mit:

<code class="cpp">int f = 0, s = 0;
get5and6(f, s);</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

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