Ketidakbolehsemulaan Rujukan dalam C
Dalam C , rujukan mempamerkan dua ciri yang menentukan: ia secara konsisten merujuk kepada objek yang sama dan tidak boleh null. Ini berbeza dengan penunjuk, yang boleh menukar sasaran objek dan ditetapkan kepada nol.
Rasional untuk Rujukan Tidak Boleh Ditetapkan Semula
Walaupun mendapat manfaat rujukan boleh reset, C tidak mempunyai ciri sedemikian. Seperti yang dinyatakan oleh Bjarne Stroustrup dalam "Reka Bentuk dan Evolusi C ":
"Tidak mungkin untuk mengubah apa yang dirujuk oleh rujukan selepas pemulaan. Sebaik sahaja rujukan dimulakan, ia tidak boleh dibuat untuk merujuk kepada yang lain. objek kemudian; ia tidak boleh diikat semula."
Mengelakkan Kekaburan
Keputusan Stroustrup berpunca daripada pengalamannya dengan Algol68, di mana rujukan boleh ditetapkan semula, sama ada melalui rujukan itu sendiri atau dengan menukar nilai rujukannya. Kekaburan ini boleh membawa kepada ralat pengaturcaraan.
Dalam C , rujukan secara konsisten menunjuk kepada objek yang sama, menghapuskan potensi kekeliruan sedemikian. Dengan menguatkuasakan sekatan ini, kejelasan dan kebolehselenggaraan kod dipertingkatkan.
Memelihara Identiti Objek
Rujukan mengekalkan perkaitan yang kukuh dengan objek sasarannya. Sambungan yang tidak mengalah ini memastikan kesahihan objek yang dirujuk. Dengan melarang penugasan semula, C menghalang rujukan berjuntai, situasi di mana rujukan menghala ke lokasi memori yang tidak sah.
Mengapa Bukan Pilihan Tetap, Boleh Ditetap Semula?
Sesetengah berpendapat bahawa a tetap, pilihan rujukan boleh reset boleh memberikan yang terbaik dari kedua-dua dunia. Walau bagaimanapun, konsep ini akan memperkenalkan kerumitan tambahan dan potensi kekaburan ke dalam bahasa.
Tingkah laku semasa, di mana rujukan tidak boleh diset semula, memastikan bahawa pembangun boleh bergantung pada rujukan untuk sentiasa menghala ke objek yang sama. Kesederhanaan dan kebolehramalan ini mengatasi faedah yang dirasakan daripada sistem rujukan yang berpotensi lebih fleksibel.
Atas ialah kandungan terperinci Mengapa Rujukan C Tidak Boleh Ditetapkan Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!