Heim > Backend-Entwicklung > C++ > Zeiger in C: Wertübergabe vs. Referenzübergabe – welche sollte ich verwenden?

Zeiger in C: Wertübergabe vs. Referenzübergabe – welche sollte ich verwenden?

Barbara Streisand
Freigeben: 2024-12-30 09:53:09
Original
523 Leute haben es durchsucht

Pointers in C  : Pass by Value vs. Pass by Reference—Which Should I Use?

Ü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
}
Nach dem Login kopieren

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];
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage