Rumah > pembangunan bahagian belakang > C++ > Apa yang Berlaku Apabila Anda Menyahrujuk Penunjuk NULL kepada Rujukan dalam C?

Apa yang Berlaku Apabila Anda Menyahrujuk Penunjuk NULL kepada Rujukan dalam C?

Mary-Kate Olsen
Lepaskan: 2024-12-15 01:24:10
asal
241 orang telah melayarinya

What Happens When You Dereference a NULL Pointer to a Reference in C  ?

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan