Pemeriksaan NULL Eksplisit vs. Tersirat dalam C/C : Pendekatan Mana Yang Lebih Baik?

Mary-Kate Olsen
Lepaskan: 2024-11-01 13:29:40
asal
973 orang telah melayarinya

Explicit vs. Implicit NULL Checks in C/C  : Which Approach Is Better?

Pengesahan Kebatalan Penunjuk dalam C/C

Dalam perbincangan semakan kod, seorang penyumbang telah menyokong penggunaan semakan NULL yang jelas dalam format berikut:

<code class="c">int * some_ptr;
if (some_ptr == NULL) { ... }</code>
Salin selepas log masuk

bukan yang tersirat semak:

<code class="c">int * some_ptr;
if (some_ptr) { ... }</code>
Salin selepas log masuk

Ini menimbulkan persoalan tentang pendekatan mana yang lebih disukai dan mengapa.

Perbandingan NULL Eksplisit

Perbandingan NULL eksplisit adalah lebih jelas dalam niatnya, dengan jelas menyatakan bahawa penunjuk tidak boleh NULL. Ia juga melindungi daripada penugasan yang tidak disengajakan, kerana yang berikut adalah tidak sah:

<code class="c">if (some_ptr = NULL) { ... }</code>
Salin selepas log masuk

Semakan NULL Tersirat

Semakan NULL tersirat adalah lebih ringkas dan kurang berkemungkinan untuk memperkenalkan pepijat disebabkan kesilapan tugasan. Ia bergantung pada fakta bahawa pembolehubah penunjuk dalam pernyataan if dinilai secara tersirat sebagai kebenarannya (bukan NULL atau NULL).

Pengesyoran

Secara amnya, ia adalah lebih baik untuk menggunakan semakan NULL tersirat atas sebab berikut:

  • Ia lebih ringkas dan padat.
  • Ia tidak bergantung pada takrifan simbol NULL.
  • Ia boleh digunakan dengan kelas C yang menyediakan penukaran kepada bool.

Pengecualian

Walau bagaimanapun, terdapat kes di mana perbandingan NULL yang jelas mungkin menjadi lebih sesuai, seperti apabila:

  • Kejelasan yang luar biasa diperlukan.
  • Kod mungkin ditafsirkan oleh pengaturcara bukan C.
  • Kod ini sangat dioptimumkan dan semakan tersirat boleh menyebabkan overhed yang tidak perlu.

Atas ialah kandungan terperinci Pemeriksaan NULL Eksplisit vs. Tersirat dalam C/C : Pendekatan Mana Yang Lebih Baik?. 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!