Rumah > Artikel > pembangunan bahagian belakang > Mengapa pembolehubah pemalar yang diubah suai mengekalkan nilai asalnya pada masa penyusunan, walaupun penunjuk bukan const membenarkan pengubahsuaian nilai sebenarnya?
Mengubah suai Pemalar melalui Penunjuk Bukan Const
Dalam kod yang diberikan, pembolehubah pemalar e dimulakan kepada 2. Bukan- const pointer w kemudiannya dilemparkan untuk menunjuk ke alamat e, secara tersirat mengalih keluar const-ness pembolehubah. Dengan membatalkan rujukan w dan memberikan nilai baharu kepadanya, nilai pada alamat e diubah suai daripada 2 kepada 5.
Walau bagaimanapun, apabila nilai *w dan e dicetak, ia kelihatan berbeza:
<code class="cpp">cout << *w << endl; // Outputs 5 cout << e << endl; // Outputs 2</code>
Tingkah laku ini boleh dijelaskan dengan mempertimbangkan cara berbeza di mana *w dan e dinilai:
Oleh itu, perbezaan dalam nilai timbul daripada masa penilaian yang berbeza bagi *w dan e. Walaupun pengubahsuaian kepada nilai pada alamat e, pembolehubah malar itu sendiri kekal tidak diubah suai pada masa penyusunan. Walau bagaimanapun, penunjuk bukan const w membenarkan pengubahsuaian nilai pada alamat yang ditunjukkannya, menghasilkan output 5 untuk *w.
Atas ialah kandungan terperinci Mengapa pembolehubah pemalar yang diubah suai mengekalkan nilai asalnya pada masa penyusunan, walaupun penunjuk bukan const membenarkan pengubahsuaian nilai sebenarnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!