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
Mary-Kate OlsenOriginal
2024-12-06 16:56:141004Durchsuche

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;
}

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;
}

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!

Stellungnahme:
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