Heim > Artikel > Backend-Entwicklung > Warum behält eine geänderte konstante Variable ihren ursprünglichen Wert zur Kompilierungszeit bei, obwohl ein nicht konstanter Zeiger eine Änderung ihres tatsächlichen Werts zulässt?
Ändern einer Konstante durch einen nicht-konstanten Zeiger
Im angegebenen Code wird eine konstante Variable e auf 2 initialisiert. Ein nicht-konstanter Zeiger Der Konstantenzeiger w wird dann so umgewandelt, dass er auf die Adresse von e zeigt, wodurch implizit die Konstanz der Variablen entfernt wird. Durch die Dereferenzierung von w und die Zuweisung eines neuen Werts wird der Wert an der Adresse von e von 2 auf 5 geändert.
Wenn jedoch die Werte von *w und e gedruckt werden, erscheinen sie unterschiedlich:
<code class="cpp">cout << *w << endl; // Outputs 5 cout << e << endl; // Outputs 2</code>
Dieses Verhalten kann durch die Berücksichtigung der unterschiedlichen Art und Weise erklärt werden, in der *w und e sind ausgewertet:
Der Wertunterschied ergibt sich daher aus den unterschiedlichen Auswertungszeitpunkten von *w und e. Trotz der Änderung des Werts an der Adresse von e bleibt die konstante Variable selbst zur Kompilierungszeit unverändert. Der nicht konstante Zeiger w ermöglicht jedoch die Änderung des Werts an der Adresse, auf die er zeigt, was zur Ausgabe von 5 für *w führt.
Das obige ist der detaillierte Inhalt vonWarum behält eine geänderte konstante Variable ihren ursprünglichen Wert zur Kompilierungszeit bei, obwohl ein nicht konstanter Zeiger eine Änderung ihres tatsächlichen Werts zulässt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!