Rumah > pembangunan bahagian belakang > C++ > Mengapa Alamat Sifar Digunakan untuk Mewakili Penunjuk Null dalam C dan C?

Mengapa Alamat Sifar Digunakan untuk Mewakili Penunjuk Null dalam C dan C?

Susan Sarandon
Lepaskan: 2024-11-28 18:58:11
asal
1058 orang telah melayarinya

Why is Address Zero Used to Represent Null Pointers in C and C  ?

Mengapa Menggunakan Alamat Sifar untuk Penunjuk Null?

Dalam C dan C , menetapkan penunjuk kepada sifar selepas membebaskan memori disyorkan untuk mengelakkan potensi bahaya dari melepaskannya lagi malloc mengembalikan penunjuk bernilai sifar apabila ia tidak dapat memperoleh memori, manakala jika (p != 0) Biasanya digunakan untuk mengesahkan kesahihan penunjuk masuk

Walaupun pengalamatan memori bermula pada 0, adakah 0 sama sah dengan alamat lain, mengapa ia digunakan untuk mengendalikan penunjuk nol? null?

Abstraksi konseptual

Penunjuk nol hanyalah konsep abstrak, pemalar dan alamatnya ialah 0 Tiada kaitan sebenar. C++ 0x menambah kata kunci nullptr untuk menekankan ini. Pengkompil boleh menterjemah pemalar 0 kepada nombor lain bergantung pada platform, cuma pastikan ia tidak sama dengan alamat "sebenar", dan sama dengan beberapa yang lain. null pointer.

Limitation Platform

Secara sejarah, 0 pernah menjadi alamat yang digunakan oleh sistem awal Hari ini, menurut C Piawaian menentukan pemalar penuding nol Pada sesetengah platform, 0 mungkin bukan nilai terbaik, jadi pengkompil bertanggungjawab untuk menukarnya kepada nombor lain.

Sebab memilih 0

Nombor negatif tidak mempunyai makna sebenar dalam konteks alamat, dan ruang positif dan negatif akan dibahagikan antara alamat yang sah dan nombor terbuang. Sebaliknya, 0 boleh diwakili dalam mana-mana jenis data. Satu-satunya keperluan yang perlu dipenuhi oleh penuding nol ialah ia tidak sama dengan penuding kepada objek sebenar dan semua penunjuk nol adalah sama antara satu sama lain

Akhirnya, pilihan 0 ialah reka bentuk keputusan untuk memastikan bahawa penunjuk nol memenuhi syarat yang diperlukan manakala Dipelihara sebagai pengecam unik untuk alamat tertentu.

Atas ialah kandungan terperinci Mengapa Alamat Sifar Digunakan untuk Mewakili Penunjuk Null dalam C dan 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