Heim >Backend-Entwicklung >C++ >Zeiger in C-Funktionen: Wertübergabe oder Referenz?

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

Linda Hamilton
Linda HamiltonOriginal
2024-12-30 21:20:11461Durchsuche

Pointers in C   Functions: Pass by Value or Reference?

Übergabe von Zeigerargumenten in C: Übergabe als Wert oder Übergabe als Referenz?

In C ist es ein weit verbreitetes Missverständnis, dass die Übergabe eines Zeigers Das Argument entspricht der Wertübergabe. Dies ist jedoch nicht der Fall.

Zeiger werden als Wert übergeben

Wenn ein Zeiger an eine Funktion übergeben wird, wird der Wert der Funktion übergeben Der Zeiger, also die Speicheradresse, auf die er zeigt, wird in den lokalen Speicher der Funktion kopiert. Dies bedeutet, dass sich alle am Zeiger innerhalb der Funktion vorgenommenen Änderungen nicht auf die ursprüngliche Zeigervariable auswirken.

Ändern des Werts, auf den verwiesen wird

Änderungen an dem Wert, auf den der Zeiger zeigt, werden jedoch in der ursprünglichen Variablen widergespiegelt. Dies liegt daran, dass der Zeiger selbst die Adresse des ursprünglichen Objekts speichert, nicht das Objekt selbst.

Ändern des Zeigerwerts

Wenn Sie den Zeigerwert darin ändern möchten Wenn Sie eine Funktion verwenden möchten, müssen Sie einen Zeiger auf einen Zeiger verwenden. Wenn Sie einen Zeiger an einen Zeiger übergeben, wird die Adresse des ursprünglichen Zeigers in die Funktion kopiert. Dadurch können Sie den ursprünglichen Zeiger innerhalb der Funktion ändern.

Standardpraxis

In C ist es akzeptabel und gilt als Standardpraxis, einen Zeiger auf einen Zeiger zu verwenden ein Argument, wenn Sie den Zeigerwert innerhalb einer Funktion ändern müssen. Dies ist eine gängige Technik in C und C, da Referenzen erst in späteren Versionen von C eingeführt wurden.

Referenzen vs. Zeiger

In modernem C werden Referenzen bevorzugt Überzeiger aus mehreren Gründen:

  • Weniger syntaktisches Rauschen
  • Weitere Informationen zu der Compiler
  • Im speziellen Fall von Zeiger auf Zeiger können Referenzen den Code vereinfachen.

Referenzen werden jedoch in C nicht unterstützt und unterbrechen die Wertübergabe Regel.

Das obige ist der detaillierte Inhalt vonZeiger in C-Funktionen: Wertübergabe oder 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