Cara Memeriksa Null di C: 7 Langkah (dengan Gambar)

Isi kandungan:

Cara Memeriksa Null di C: 7 Langkah (dengan Gambar)
Cara Memeriksa Null di C: 7 Langkah (dengan Gambar)

Video: Cara Memeriksa Null di C: 7 Langkah (dengan Gambar)

Video: Cara Memeriksa Null di C: 7 Langkah (dengan Gambar)
Video: How to Resize and Export Vector Icons (SVG) in GIMP 2024, Mungkin
Anonim

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

Lihat Null di C Langkah 1
Lihat Null di C Langkah 1

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

    }

Lihat Null di C Langkah 2
Lihat Null di C Langkah 2

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

    }

Lihat Null di C Langkah 3
Lihat Null di C Langkah 3

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)

Lihat Null di C Langkah 4
Lihat Null di C Langkah 4

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

Lihat Null di C Langkah 5
Lihat Null di C Langkah 5

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.

    }

Lihat Null di C Langkah 6
Lihat Null di C Langkah 6

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;

    }

Lihat Null di C Langkah 7
Lihat Null di C Langkah 7

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.

Petua

Anda boleh menggunakan daftar masuk ini semasa gelung seperti yang lain: sementara (NULL == ptr) {

Disyorkan: