Menentukan Tingkah Laku Tidak Ditakrifkan untuk Menyahrujuk Penunjuk Tidak Dimulakan dalam Piawaian C
Soalan yang dikemukakan bertujuan untuk memahami bahagian khusus dalam piawaian C yang menganggap membatalkan penunjuk yang tidak dimulakan sebagai tingkah laku yang tidak ditentukan. Walaupun rujukan sebelumnya kepada 5.3.1/1 dan 3.7.3.2/4 memberikan maklumat yang berkaitan, mereka tidak menyatakan secara eksplisit tingkah laku yang tidak ditentukan yang berkaitan dengan menggunakan penunjuk yang tidak dimulakan.
Jawapannya terletak dalam Bahagian 4.1, yang menangani penukaran nilai untuk rnilai (penekanan ditambah):
"Sebuah lnilai (3.10) bukan fungsi, jenis bukan tatasusunan boleh ditukar kepada nilai r Jika T ialah jenis yang tidak lengkap, program yang memerlukan penukaran ini tidak terbentuk jika objek yang dirujuk tidak objek jenis T dan bukan objek jenis yang diperoleh daripada T, atau jika objek tidak diinisialisasikan, atur cara yang memerlukan penukaran ini mempunyai tingkah laku yang tidak ditentukan."
Bahagian ini dengan jelas menyatakan bahawa percubaan untuk menggunakan nilai l (seperti penunjuk) yang merujuk kepada objek yang tidak dimulakan akan mengakibatkan kelakuan tidak ditentukan. Oleh itu, sampel kod yang disediakan:
int* ptr; *ptr = 0;
memang mempamerkan gelagat yang tidak ditentukan kerana ptr penunjuk digunakan tanpa pemula.
Untuk 进一步深入了解 topik ini, mencari standard C untuk "tidak dimulakan " akan mendedahkan bahagian tambahan yang menyentuh tingkah laku yang tidak ditentukan yang dikaitkan dengan yang tidak dimulakan objek.
Atas ialah kandungan terperinci Di manakah dalam Piawaian C Menyahrujuk Penunjuk Tidak Dimulakan Ditakrifkan sebagai Kelakuan Tidak Ditakrifkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!