Menyemak Penunjuk NULL dalam C/C : Perbandingan Kaedah
Dalam semakan kod, topik semakan penuding NULL sering timbul. Seorang penyumbang menyokong penggunaan perbandingan eksplisit dengan NULL:
int * some_ptr; // ... if (some_ptr == NULL) { // Handle null-pointer error } else { // Proceed }
Pihak lain percaya bahawa secara tersirat menyemak NULL dengan menggunakan pembolehubah penunjuk dalam pernyataan if adalah sama jelas:
int * some_ptr; // ... if (some_ptr) { // Proceed } else { // Handle null-pointer error }
Ini kaedah terakhir lebih disukai kerana beberapa sebab. Pertama, ia mengelakkan risiko memperkenalkan ralat logik seperti memberikan NULL kepada pembolehubah penunjuk dan bukannya membandingkannya:
if (some_ptr = NULL)
Kedua, ia serasi dengan kelas C seperti unique_ptr, shared_ptr dan auto_ptr yang bertindak sebagai penunjuk tetapi menyediakan penukaran kepada boolean. Perbandingan eksplisit kepada NULL memerlukan penukaran kepada penuding, yang mungkin mempunyai kesan sampingan atau kurang cekap.
Perbandingan eksplisit kepada NULL tidak semestinya bertele-tele dan menimbulkan kemungkinan kekeliruan. Bahasa C secara eksplisit menyatakan bahawa nilai bukan sifar dalam konteks boolean adalah benar, dan nilai sifar adalah palsu. Menggunakan semakan tersirat untuk NULL adalah jelas dan ringkas, menyatakan maksud kod tanpa kekhususan berlebihan.
Atas ialah kandungan terperinci Patutkah Anda Menyemak Penunjuk NULL secara Eksplisit dalam C/C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!