Dalam kod ini, rujukan diisytiharkan dan dimulakan kepada nilai yang diperoleh daripada penyahrujukan penunjuk nol:
int &nullReference = *(int*)0;
Walaupun ia mungkin kelihatan sah berdasarkan tingkah laku pengkompil, adalah penting untuk memahami bahawa rujukan berbeza daripada penunjuk.
Menurut Piawaian C (8.3.2/1):
"Rujukan hendaklah dimulakan untuk merujuk kepada objek atau fungsi yang sah... khususnya, rujukan null tidak boleh wujud dalam program yang ditakrifkan dengan baik."
Ini menekankan bahawa rujukan batal, yang tidak merujuk kepada mana-mana objek yang sah, bukan konsep yang ditakrifkan dengan baik dalam C .
Tambahan pula, Piawaian (1.9/4) menyatakan bahawa "kesan penyahrujukan penuding nol" tidak ditentukan. Dalam kes ini, apabila kita mempunyai rujukan yang dimulakan menggunakan penuding nol, ini bermakna membatalkan rujuk penuding nol itu sendiri, yang merupakan tingkah laku yang tidak ditentukan secara jelas.
Oleh itu, walaupun kod itu mungkin disusun tanpa amaran, ia tidak sah kod C dan harus dielakkan. Rujukan nol bukan konsep yang sah dalam bahasa dan sebarang percubaan untuk menciptanya akan mengakibatkan tingkah laku yang tidak ditentukan.
Atas ialah kandungan terperinci Bolehkah Rujukan C Menjadi Batal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!