Mendahulukan Penunjuk NULL untuk Rujukan
Piawaian C secara eksplisit menangani tingkah laku penyahrujukan penunjuk NULL untuk mendapatkan rujukan. Amalan ini dianggap tingkah laku tidak ditakrifkan.
Dalam contoh yang disediakan:
int* ptr = NULL; int& ref = *ptr; int* ptr2 = &ref;
Percubaan penyahrujukan ptr penunjuk NULL dianggap kelakuan tidak ditentukan. Mengikut standard (8.3.2/4 "Rujukan"):
Nota: khususnya, rujukan nol tidak boleh wujud dalam atur cara yang jelas, kerana satu-satunya cara untuk mencipta rujukan sedemikian adalah untuk mengikatnya pada "objek" yang diperolehi dengan membatalkan rujukan penunjuk nol, yang menyebabkan tidak ditentukan tingkah laku.
Oleh itu, memberikan rujukan kepada penuding NULL yang dinyahrujuk adalah tidak sah dan tingkah laku itu tidak ditakrifkan dengan baik. Keputusan penggunaan ptr2, yang menunjuk kepada rujukan yang diperolehi daripada penuding NULL yang dinyahrujuk, juga tidak ditentukan.
Satu pengecualian kepada larangan menafikan penunjuk NULL adalah apabila digunakan dengan operator saiz. Dalam konteks ini, penunjuk sebenarnya tidak dinilai, jadi penyahrujukan ia tidak menyebabkan kelakuan tidak ditentukan. Walau bagaimanapun, pengecualian ini terhad kepada saiz operator.
Atas ialah kandungan terperinci Apa yang Berlaku Apabila Anda Menyahrujuk Penunjuk NULL kepada Rujukan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!