Heim  >  Artikel  >  Backend-Entwicklung  >  Wie wirkt sich Call-by-Value auf die Argumentänderung in C aus?

Wie wirkt sich Call-by-Value auf die Argumentänderung in C aus?

Barbara Streisand
Barbara StreisandOriginal
2024-11-12 12:06:02725Durchsuche

How Does Call-by-Value Affect Argument Modification in C  ?

Call-by-Value in C verstehen

In diesem Call-by-Value-Beispiel akzeptiert eine Funktion namens changeValue() eine Ganzzahl Argument, das eine Kopie des tatsächlichen Arguments darstellt, das von der Funktion main() übergeben wird. Wenn die Funktion den Wert des Arguments auf 6 ändert, ändert sie die Kopie und nicht den ursprünglichen Wert, der in der Funktion main() gespeichert ist.

Dies liegt daran, dass Call-by-Value eine neue Kopie des Arguments erstellt und übergibt es an die Funktion. Daher wirken sich alle an der Kopie innerhalb der Funktion vorgenommenen Änderungen nicht auf den Originalwert aus.

Lösung des Problems mithilfe von Call-by-Reference

Um das ursprüngliche Argument zu ändern Wird von main() gesendet, müssen wir Call-by-Reference verwenden. Dabei wird statt einer Kopie ein Verweis (ein Alias) auf das eigentliche Argument übergeben.

Im Beispiel kann dies erreicht werden, indem die Signatur der Funktion „changeValue()“ wie folgt geändert wird:

void changeValue(int &value)

Durch die Verwendung eines kaufmännischen Und-Zeichens (&) vor dem Argumenttyp geben wir an, dass die Funktion einen Verweis auf die ursprüngliche Variable erhält. Alle an der Referenz vorgenommenen Änderungen wirken sich direkt auf das ursprüngliche Argument in main() aus.

Überarbeiteter Code:

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

Mit dieser Änderung, wenn changeValue() gesetzt wird Wenn Sie auf 6 verweisen, wird der ursprüngliche Wert in main() auf 6 geändert, was zur Ausgabe „Der Wert ist: 6.“ führt.

Das obige ist der detaillierte Inhalt vonWie wirkt sich Call-by-Value auf die Argumentänderung in C aus?. 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