Adakah `jika (penunjuk)` Cukup? Pandangan pada Penilaian Penunjuk dalam Penyata Bersyarat

Barbara Streisand
Lepaskan: 2024-11-04 07:20:31
asal
998 orang telah melayarinya

Is `if (pointer)` Enough? A Look at Pointer Evaluation in Conditional Statements

Penilaian Penunjuk dalam Pernyataan Bersyarat

Apabila menilai penunjuk dalam pernyataan bersyarat, anda mungkin tertanya-tanya sama ada ungkapan jika (penunjuk) mencukupi atau jika jika (penunjuk != NULL) perlu.

Perangkap Penunjuk Null

Pendekatan tradisional, menggunakan if (penunjuk != NULL), secara eksplisit menyemak sama ada penunjuk tidak sama dengan nilai penunjuk nol (NULL). Walau bagaimanapun, pendekatan ini bergantung pada andaian bahawa NULL ditakrifkan dan mempunyai nilai khusus, yang boleh berbeza-beza bergantung pada platform dan bahasa pengaturcaraan.

Penukaran Boolean Tersirat

C 11 memperkenalkan mekanisme yang memudahkan penilaian penunjuk dalam pernyataan bersyarat. Penunjuk nol ditukar secara tersirat kepada nilai boolean palsu, manakala penunjuk bukan nol ditukar kepada benar. Ini bermakna ungkapan if (penunjuk) secara fungsinya bersamaan dengan if (penunjuk != NULL) selagi penuding bukan jenis std::nullptr_t.

Bahagian pada Penukaran Boolean

Menurut standard C 11, bahagian mengenai Penukaran Boolean:

"Nilai aritmetik, penghitungan tidak berskop, penunjuk atau penuding kepada jenis ahli boleh ditukar kepada nilai jenis bool. Nilai sifar, nilai penuding nol atau nilai penuding ahli nol ditukar kepada palsu; sebarang nilai lain ditukar kepada benar."

Kesimpulan

Dalam C 11 dan kemudian, anda boleh menggunakan if (penunjuk) dengan selamat dan bukannya if (penunjuk != NULL) untuk menyemak sama ada penuding bukan nol. Walau bagaimanapun, jika anda menggunakan std::nullptr_t, anda harus kekal dengan perbandingan eksplisit if (penunjuk != nullptr) untuk memastikan penilaian yang betul.

Atas ialah kandungan terperinci Adakah `jika (penunjuk)` Cukup? Pandangan pada Penilaian Penunjuk dalam Penyata Bersyarat. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!