Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pemeriksaan NULL Eksplisit vs. Tersirat dalam C/C : Pendekatan Mana Yang Lebih Baik?

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-01 13:29:40974semak imbas

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>

bukan yang tersirat semak:

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

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>

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!

Kenyataan:
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