Heim >Backend-Entwicklung >C++ >Wie werden Zeiger in C übergeben: als Wert oder als Referenz?

Wie werden Zeiger in C übergeben: als Wert oder als Referenz?

Linda Hamilton
Linda HamiltonOriginal
2024-12-04 21:26:12891Durchsuche

How are Pointers Passed in C  : By Value or By Reference?

Zeigerübergabe in C: Wertübergabe oder Referenzübergabe?

Frage:

In C beim Übergeben Zeigerargumente, verhält es sich als Wertübergabe oder als Übergabe Referenz?

Antwort:

Zeiger werden als Wert in C übergeben, was bedeutet, dass die Adresse des Objekts, auf das verwiesen wird, in den Funktionsparameter kopiert wird. Dies impliziert zwei Szenarien:

  • Änderungen an der Zeigervariablen (der Adresse) innerhalb der Funktion werden nicht im externen Zeiger widergespiegelt.
  • Änderungen, die durch Zeiger-Dereferenzierung (Änderung) vorgenommen werden das spitze Objekt) wird außerhalb der Funktion reflektiert.

Zeiger auf Zeiger Bestehen:

Wenn das Ziel darin besteht, den Zeigerwert selbst zu ändern (auf ein anderes Objekt zu zeigen), ist ein Zeiger auf einen Zeiger erforderlich. Dies wird durch die Verwendung eines doppelten kaufmännischen Und-Zeichens (&&) vor dem Zeigernamen bei der Übergabe an die Funktion erreicht. Diese Methode ist in C gängige Praxis.

Referenzen vs. Zeiger:

In C werden Referenzen aus mehreren Gründen gegenüber Zeigern bevorzugt:

Vorteile von Referenzen:

  • Reduziertes syntaktisches Rauschen in der Funktion Körper
  • Mehr Informationen werden dem Compiler bereitgestellt und ermöglichen Optimierungen

Nachteile von Referenzen:

  • Brechen Sie den Vorbeilauf -Werte-Regel von C, die mehr Aufmerksamkeit auf das Parameterverhalten erfordert
  • Nicht unterstützt in C

Sonderfall: Zeiger auf Zeiger vs. Referenz

Im Fall der Zeiger-zu-Zeiger-Übergabe besteht der Hauptunterschied zur Verwendung einer Referenz in der Einfachheit. Durch die Übergabe eines Verweises auf den äußeren Zeiger können beide Ebenen der Indirektion eliminiert werden, was einen einfacheren Ansatz ermöglicht.

Das obige ist der detaillierte Inhalt vonWie werden Zeiger in C übergeben: als Wert oder als Referenz?. 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