Rumah >pembangunan bahagian belakang >C++ >Mengapakah Penyahrujukan Penunjuk NULL untuk Mencipta Rujukan dalam C Gelagat Tidak Ditakrifkan?

Mengapakah Penyahrujukan Penunjuk NULL untuk Mencipta Rujukan dalam C Gelagat Tidak Ditakrifkan?

Susan Sarandon
Susan Sarandonasal
2024-12-06 14:27:121019semak imbas

Why is Dereferencing a NULL Pointer to Create a Reference in C   Undefined Behavior?

Piawaian C: Kelakuan Tidak Ditakrifkan Penuding NULL Penunjuk NULL untuk Penciptaan Rujukan

Piawaian C menyatakan secara eksplisit bahawa penyahrujukan penunjuk NULL mengakibatkan tingkah laku yang tidak ditentukan . Prinsip ini terpakai pada penciptaan rujukan juga, seperti yang ditunjukkan oleh kod yang disediakan:

int* ptr = NULL;
int& ref = *ptr;
int* ptr2 = &ref;

Dalam kod ini, pengkompil cuba mencipta rujukan rujukan dengan menyahrujuk ptr penunjuk NULL. Mengikut piawaian, ini adalah tingkah laku yang tidak ditentukan dan tindakan seterusnya program tidak dapat diramalkan.

Nota dalam 8.3.2/4 piawaian mengukuhkan perkara ini, menyatakan bahawa rujukan nol tidak boleh wujud dalam telaga- atur cara yang ditakrifkan kerana ia memerlukan penyahrujukan penunjuk NULL, yang merupakan kelakuan tidak ditentukan.

Ia penting untuk ambil perhatian bahawa tingkah laku yang ditentukan memastikan pelaksanaan program yang boleh diramal dan konsisten, manakala tingkah laku yang tidak ditentukan menyebabkan hasil program tidak ditentukan. Oleh itu, adalah penting untuk mengelak daripada bergantung pada tingkah laku yang tidak ditentukan dalam kod C anda.

Atas ialah kandungan terperinci Mengapakah Penyahrujukan Penunjuk NULL untuk Mencipta Rujukan dalam C Gelagat Tidak Ditakrifkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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