Dalam C, NULL adalah pemalar simbolik yang selalu menunjukkan titik yang tidak ada dalam ingatan. Walaupun banyak pengaturcara menganggapnya sama dengan 0, ini adalah penyederhanaan yang dapat membuat anda kelak di kemudian hari. Sebaiknya periksa petunjuk anda terhadap NULL secara langsung, dan gunakan 0 dalam konteks lain. Ini memastikan kod anda tetap bersih dan mudah difahami, kerana anda akan tahu bahawa anda bekerja dengan petunjuk setiap kali anda melihat NULL.
Langkah-langkah
Bahagian 1 dari 2: Melakukan Pemeriksaan Null
Langkah 1. Gunakan kod semakan standard
Berikut adalah kaedah paling jelas untuk menulis cek kosong. Kami akan menggunakan ptr dalam artikel ini sebagai nama penunjuk yang anda periksa.
-
jika (ptr == NULL)
{
// kod jika penunjuk adalah NULL
} lain {
// kod jika tidak NULL
}
Langkah 2. Uji nilai apa pun kecuali NULL
Kadang-kadang lebih senang untuk menguji ketaksamaan. Tiada kejutan di sini:
-
jika (ptr! = NULL) {
// kod jika tidak NULL
}
Langkah 3. Tulis NULL terlebih dahulu untuk mengelakkan kesilapan (pilihan)
Kelemahan utama kaedah PTR == NULL adalah kemungkinan anda akan menaip ptr = NULL secara tidak sengaja, dengan memberikan nilai NULL pada penunjuk tersebut. Ini boleh menyebabkan sakit kepala yang teruk. Oleh kerana menguji kesetaraan (dalam) memperlakukan operan secara simetris, anda boleh mendapatkan hasil yang sama dengan menulis jika (NULL == ptr) sebaliknya. Ini lebih tahan ketik, kerana NULL = ptr secara tidak sengaja membuat ralat kompilasi yang mudah.
Ini kelihatan agak janggal bagi sebilangan pengaturcara, tetapi ia benar-benar sah. Pendekatan mana yang anda gunakan bergantung pada pilihan peribadi, dan seberapa baik penyusun anda dalam mengesan ralat if (ptr = NULL)
Langkah 4. Uji sama ada pemboleh ubah itu benar
Yang mudah jika (ptr) menguji sama ada ptr adalah BENAR. Ia akan mengembalikan SALAH jika ptr adalah NULL, atau jika ptr adalah 0. Perbezaannya tidak penting dalam banyak kes, tetapi ketahuilah bahawa ini tidak serupa dalam semua seni bina.
Kebalikan dari ini adalah sekiranya (! ptr), yang akan mengembalikan BENAR jika ptr SALAH.
Bahagian 2 dari 2: Mengelakkan Kesalahan
Langkah 1. Tetapkan penunjuk sebelum memeriksa NULL
Satu kesalahan yang biasa dilakukan adalah menganggap bahawa penunjuk yang baru dibuat mempunyai nilai NULL. Ini tidak benar. Penunjuk yang tidak ditugaskan masih menunjuk ke alamat memori, bukan yang anda nyatakan. Menjadi kebiasaan untuk menetapkan petunjuk yang baru dibuat atau baru dibebaskan ke NULL untuk memastikan anda tidak menggunakan alamat yang tidak membantu ini secara tidak sengaja.
-
Elakkan kesilapan ini:
char * ptr;
jika (ptr == NULL)
{
// Ini akan mengembalikan SALAH. Penunjuk telah diberikan nilai yang sah.
}
-
Sebaliknya tulis:
char * ptr = NULL; // Ini memberikan penunjuk kepada NULL
jika (ptr == NULL)
{
// Ini akan mengembalikan BENAR jika penunjuk belum ditugaskan semula.
}
Langkah 2. Perhatikan fungsi yang boleh mengembalikan NULL
Sekiranya fungsi dapat mengembalikan NULL, fikirkan apakah ini kemungkinan, dan adakah itu akan menimbulkan masalah kemudian dalam kod anda. Berikut adalah contoh fungsi malloc menggunakan null check (jika (ptr)) untuk memastikan ia hanya menangani penunjuk dengan nilai yang sah:
-
int * ptr = malloc (N * sizeof (int));
jika (ptr) {
int i;
untuk (i = 0; i <N; ++ i)
ptr = i;
}
Langkah 3. Fahami bahawa NULL adalah 0 tetapi anda harus selalu menggunakan NULL dan bukannya 0 ketika bekerja dengan petunjuk untuk kejelasan
Dari segi sejarah, C mewakili NULL sebagai nombor 0 (iaitu 0x00). Pada masa kini ia boleh menjadi lebih rumit, dan berbeza mengikut sistem operasi. Anda biasanya boleh memeriksa penggunaan NULL ptr == 0, tetapi ada kes sudut di mana ini boleh menyebabkan masalah. Mungkin yang lebih penting, menggunakan NULL menjadikan anda jelas bahawa anda bekerja dengan petunjuk untuk orang lain membaca kod anda.