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:
Pengecualian
Walau bagaimanapun, terdapat kes di mana perbandingan NULL yang jelas mungkin menjadi lebih sesuai, seperti apabila:
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!