Heim  >  Artikel  >  Backend-Entwicklung  >  Warum kann ich Eingabeparameter in C/C-Funktionen nicht mithilfe von Call-by-Value ändern?

Warum kann ich Eingabeparameter in C/C-Funktionen nicht mithilfe von Call-by-Value ändern?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-13 15:49:02847Durchsuche

Why Can't I Modify Input Parameters in C/C   Functions Using Call-by-Value?

Warum Call-by-Value Eingabeparameter nicht aktualisieren kann

In C/C werden Funktionsparameter normalerweise als Wert übergeben, was bedeutet, dass Es wird eine Kopie der Eingabevariablen erstellt und an die Funktion gesendet. Dies bedeutet, dass sich alle innerhalb der Funktion vorgenommenen Änderungen nur auf die lokale Kopie und nicht auf die Originalvariable auswirken.

Betrachten Sie das Beispiel:

#include <iostream>

using namespace std;

void changeValue(int value);

int main() {
  int value = 5;
  changeValue(value);
  cout << "The value is: " << value << "." << endl;
  return 0;
}

void changeValue(int value) {
  value = 6;
}

Dieser Code versucht, den Wert des Eingabeparameters zu ändern innerhalb der changeValue-Funktion. Die Ausgabe bleibt jedoch 5, auch wenn die Funktion die lokale Kopie auf 6 ändert.

Das liegt daran, dass die Funktion „changeValue“ eine Kopie der Wertvariablen von main() erhält. Die Funktion arbeitet dann mit dieser lokalen Kopie, die unabhängig von der Originalvariablen in main() ist. Daher werden die innerhalb der Funktion vorgenommenen Änderungen nicht auf die ursprüngliche Variable übertragen.

Verwenden von Call-by-Reference zum Ändern von Eingabeparametern

Um die ursprüngliche Variable zu ändern Innerhalb einer Funktion muss Call-by-Reference verwendet werden. Dadurch kann die Funktion auf die tatsächliche Variable im Speicher zugreifen und diese ändern, anstatt nur eine Kopie:

#include <iostream>

using namespace std;

void changeValue(int &value);

int main() {
  int value = 5;
  changeValue(value);
  cout << "The value is: " << value << "." << endl;
  return 0;
}

void changeValue(int &value) {
  value = 6;
}

In diesem Beispiel nimmt die Funktion „changeValue“ einen Verweis auf die Wertvariable entgegen, dargestellt durch das kaufmännische Und (& ). Dadurch kann die Funktion direkt auf die Originalvariable zugreifen und diese ändern. Wenn die Funktion den Wert auf 6 setzt, ändert sie daher die tatsächliche Variable in main() und die Ausgabe spiegelt die Änderung korrekt wider.

Das obige ist der detaillierte Inhalt vonWarum kann ich Eingabeparameter in C/C-Funktionen nicht mithilfe von Call-by-Value ändern?. 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