Adakah `if (penunjuk)` Bersamaan dengan `jika (penunjuk != NULL)` dalam C ?

Susan Sarandon
Lepaskan: 2024-11-03 20:37:29
asal
182 orang telah melayarinya

Is `if (pointer)` Equivalent to `if (pointer != NULL)` in C  ?

Adakah if (penunjuk) Bersamaan dengan if (penunjuk != NULL)?

Dalam pengaturcaraan C, adalah amalan biasa untuk menyemak sama ada penunjuk bukan NULL untuk memastikan ia menunjuk ke lokasi memori yang sah. Secara tradisinya, ini dicapai dengan keadaan if (pointer != NULL). Walau bagaimanapun, terdapat sintaks alternatif yang berpotensi: jika (penunjuk).

Adakah Selamat Digunakan jika (penunjuk)?

Ya, jika (penunjuk) adalah sah sintaks dan bersamaan dengan if (penunjuk != NULL). Sebabnya terletak pada peraturan penukaran tersirat C.

Penukaran Boolean Tersirat

Mengikut standard C 11 tentang Penukaran Boolean:

"A prnilai aritmetik, penghitungan tidak berskop, penunjuk atau penuding kepada jenis ahli boleh ditukar kepada nilai jenis bool Nilai sifar, nilai penunjuk nol atau nilai penuding ahli nol ditukar kepada nilai benar. "

Dalam erti kata lain, apabila nilai penunjuk digunakan dalam konteks boolean, pengkompil secara tersirat memaksanya menjadi nilai boolean. Penunjuk nol dianggap sebagai palsu, manakala semua nilai penuding lain dianggap sebagai benar.

Contoh Praktikal

Pertimbangkan kod berikut:

<code class="cpp">int* p = nullptr;
if (p) {
  // Do something
} else {
  // Do something else
}</code>
Salin selepas log masuk

Dalam contoh ini, syarat if (p) adalah sah kerana penunjuk nol p secara tersirat ditukar kepada palsu. Jika p menunjuk ke lokasi memori yang sah, keadaan akan dinilai kepada benar.

Kesimpulan

Walaupun secara teknikalnya betul untuk menggunakan if (penunjuk) dan bukannya if ( penunjuk != NULL), yang terakhir adalah lebih jelas dan disyorkan untuk tujuan kejelasan dan kebolehbacaan.

Atas ialah kandungan terperinci Adakah `if (penunjuk)` Bersamaan dengan `jika (penunjuk != NULL)` dalam 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