Heim >Backend-Entwicklung >C++ >Zeiger in C-Funktionen: Wertübergabe oder Referenz?
Ü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:
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!