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:
#includeusing 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!