Übergabe von Zeigern nach Wert vs. durch Referenz
Bei der Übergabe von Zeigern an Funktionen ist es wichtig, den Unterschied zwischen der Übergabe nach Wert und zu verstehen Übergabe per Referenz.
Im bereitgestellten Beispiel versucht die Funktion clickOnBubble, den Wert von targetBubble auf einen in den Blasen gespeicherten Zeiger zu setzen Vektor. Die Funktion übergibt jedoch nur eine Kopie von targetBubble an die Funktion, sodass alle an der Kopie innerhalb der Funktion vorgenommenen Änderungen nicht im ursprünglichen Zeiger widergespiegelt werden.
Übergabe als Referenz mit Zeiger auf -Zeiger
Um den ursprünglichen Zeiger zu ändern, ist es notwendig, ihn als Referenz zu übergeben. Dies kann mithilfe eines Zeiger-zu-Zeigers erfolgen, wie im folgenden Code gezeigt:
void foo(int **ptr) { *ptr = new int[10]; // Just for example, use RAII in a real-world application }
In diesem Beispiel ist ptr ein Zeiger auf einen Zeiger. Beim Aufruf der Funktion wird die Adresse von targetBubble an die Funktion übergeben. Die Funktion kann dann den doppelten Indirektionsoperator (**) verwenden, um auf den ursprünglichen targetBubble-Zeiger zuzugreifen und ihn zu ändern.
Referenzübergabe mit Referenz-auf-Zeiger
Andere Eine Möglichkeit, einen Zeiger als Referenz zu übergeben, ist die Verwendung eines Referenz-auf-Zeigers, wie im folgenden Code gezeigt:
void bar(int *&ptr) { ptr = new int[10]; }
Hier: ptr ist eine Referenz auf einen Zeiger. Beim Aufruf der Funktion wird die Referenz an targetBubble gebunden. Die Funktion kann dann targetBubble direkt über die Referenz ändern.
Das obige ist der detaillierte Inhalt vonZeiger in C: Wertübergabe vs. Referenzübergabe – welche sollte ich verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!