Heim > Backend-Entwicklung > C++ > Wie werden Zeiger in C als Argumente, als Wert oder als Referenz übergeben?

Wie werden Zeiger in C als Argumente, als Wert oder als Referenz übergeben?

Mary-Kate Olsen
Freigeben: 2024-12-06 16:56:14
Original
1020 Leute haben es durchsucht

How Are Pointers Passed as Arguments in C  , by Value or by Reference?

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

In C werden Argumente normalerweise als Wert übergeben, einschließlich Zeiger. Wenn ein Zeiger als Argument übergeben wird, wird die Adresse des Objekts, auf das er zeigt, in den Parameter der Funktion kopiert. Dies bedeutet, dass alle Änderungen, die am Zeiger selbst innerhalb der Funktion vorgenommen werden, nicht außerhalb der Funktion widergespiegelt werden.

Änderungen, die am Objekt vorgenommen werden, auf das der Zeiger zeigt, werden jedoch widergespiegelt, da das ursprüngliche Objekt durch geändert wird die Zeigerreferenz. Daher ist es akzeptabel und ein Standardverfahren, einen Zeiger auf einen Zeiger als Argument für eine Funktion zu verwenden, um den Zeigerwert innerhalb dieser Funktion zu ändern.

Betrachten Sie beispielsweise den folgenden Code:

void ModifyPointer(int **ptr) {
  *ptr = new int;
}

int main() {
  int *ptr = new int;
  ModifyPointer(&ptr);
  return 0;
}
Nach dem Login kopieren

In diesem Code akzeptiert die ModifyPointer-Funktion einen Zeiger auf einen Zeiger als Argument. Innerhalb der Funktion wird ein neues int-Objekt zugewiesen und der vom Parameter referenzierte Zeiger wird aktualisiert, um auf das neue Objekt zu zeigen.

Da der ursprüngliche Zeiger durch den Zeiger auf den Zeiger geändert wird, wird die Änderung im widergespiegelt Hauptfunktion. Die ptr-Variable zeigt jetzt auf das neu zugewiesene int-Objekt.

In C wird nach Möglichkeit vorzugsweise Referenzen anstelle von Zeigern verwendet. Referenzen bieten eine ähnliche Funktionalität wie Zeiger, jedoch mit saubererer Syntax und stärkerer Typprüfung.

Zum Beispiel kann das obige Beispiel mit einer Referenz umgeschrieben werden:

void ModifyPointer(int *&ptr) {
  ptr = new int;
}

int main() {
  int *ptr = new int;
  ModifyPointer(ptr);
  return 0;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie werden Zeiger in C als Argumente, als Wert oder als Referenz übergeben?. 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