Übergabe von Zeigerargumenten: Übergabe als Wert oder Übergabe als Referenz?
In C werden Funktionsargumente normalerweise als Wert übergeben, was bedeutet, dass a Eine Kopie der Argumentvariablen wird innerhalb der Funktion erstellt. Dies gilt auch für Zeigerargumente. Wenn also ein Zeiger an eine Funktion übergeben wird, wird eine Kopie der Zeigervariablen (nicht des Speichers, auf den gezeigt wird) übergeben.
Daher werden Änderungen an der Zeigervariablen innerhalb der Funktion vorgenommen B. das Ändern der Adresse, auf die es zeigt, hat keinen Einfluss auf den ursprünglichen Zeiger außerhalb der Funktion. Änderungen am Speicher, auf den der dereferenzierte Zeiger zeigt, wie z. B. die Änderung des Werts des Objekts, auf das er verweist, werden jedoch außerhalb der Funktion widergespiegelt, da auf das Objekt selbst und nicht auf den Zeiger verwiesen wird.
In In Fällen, in denen Sie den Zeigerwert selbst innerhalb einer Funktion ändern müssen, können Zeiger-zu-Zeiger-Argumente verwendet werden. Indem Sie einen Zeiger auf einen Zeiger übergeben, übergeben Sie im Wesentlichen einen Verweis auf die Zeigervariable. Alle Änderungen am Zeiger innerhalb der Funktion werden dann im ursprünglichen Zeiger außerhalb der Funktion widergespiegelt.
Diese Technik wird häufig in C verwendet, wo sie als „Übergabe als Referenz an den Zeiger“ bekannt ist. In C wird jedoch im Allgemeinen die Verwendung von Referenzen gegenüber Zeigern bevorzugt, da sie eine ähnliche Funktionalität mit verbesserter Syntax und Compiler-Unterstützung bieten.
Referenzen sind im Wesentlichen Aliase für andere Variablen und wenn eine Referenz an eine Funktion übergeben wird , wird effektiv ein Verweis auf die Originalvariable übergeben. Dies bedeutet, dass alle an der Referenz innerhalb der Funktion vorgenommenen Änderungen in der ursprünglichen Variablen außerhalb der Funktion widergespiegelt werden.
Sowohl Zeiger-zu-Zeiger-Argumente als auch Referenzen können zum Ändern von Zeigerwerten innerhalb von Funktionen verwendet werden. Die Wahl zwischen den beiden Methoden hängt von Faktoren wie Codekomplexität, Lesbarkeit und Compilerunterstützung ab.
Das obige ist der detaillierte Inhalt vonWertübergabe oder Referenzübergabe: Wie werden Zeigerargumente in C behandelt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!