Rumah > pembangunan bahagian belakang > C++ > Di manakah dalam Piawaian C Menyahrujuk Penunjuk Tidak Dimulakan Ditakrifkan sebagai Kelakuan Tidak Ditakrifkan?

Di manakah dalam Piawaian C Menyahrujuk Penunjuk Tidak Dimulakan Ditakrifkan sebagai Kelakuan Tidak Ditakrifkan?

Mary-Kate Olsen
Lepaskan: 2024-12-16 20:59:11
asal
771 orang telah melayarinya

Where in the C   Standard is Dereferencing an Uninitialized Pointer Defined as Undefined Behavior?

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

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!

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