C: 7 Adımda Null Necə yoxlanılır (Şəkillərlə birlikdə)

Mündəricat:

C: 7 Adımda Null Necə yoxlanılır (Şəkillərlə birlikdə)
C: 7 Adımda Null Necə yoxlanılır (Şəkillərlə birlikdə)

Video: C: 7 Adımda Null Necə yoxlanılır (Şəkillərlə birlikdə)

Video: C: 7 Adımda Null Necə yoxlanılır (Şəkillərlə birlikdə)
Video: Photoshopla üz təmizləmə qaydası 2024, Aprel
Anonim

C -də NULL həmişə yaddaşda olmayan bir nöqtəyə işarə edən simvolik bir sabitdir. Bir çox proqramçı bunu 0 -a bərabər hesab etsə də, bu sizi sonradan sıradan çıxara biləcək bir sadələşdirmədir. Göstəricilərinizi NULL ilə birbaşa yoxlamaq və digər kontekstlərdə 0 istifadə etmək yaxşıdır. Bu, kodunuzu təmiz və başa düşülməsi asan saxlayır, çünki hər dəfə NULL gördüyünüz zaman göstəricilərlə işlədiyinizi biləcəksiniz.

Addımlar

2 -dən 1 -ci hissə: Sıfır yoxlama aparın

C Adım 1 -də Null yoxlayın
C Adım 1 -də Null yoxlayın

Addım 1. Standart sıfır yoxlama kodundan istifadə edin

Null çek yazmağın ən açıq yolu aşağıdakılardır. İstifadə edəcəyik ptr bu yazıda yoxladığınız göstəricinin adı olaraq.

  • əgər (ptr == NULL)

    {

    // göstərici NULL olarsa kod

    } başqa {

    // kod NULL deyilsə

    }

C Adım 2 -də Null yoxlayın
C Adım 2 -də Null yoxlayın

Addım 2. Hər hansı bir dəyər yoxlayın, ancaq NULL

Bəzən bərabərsizliyi yoxlamaq daha rahatdır. Burada sürpriz yoxdur:

  • əgər (ptr! = NULL) {

    // kod NULL deyilsə

    }

C Adım 3 -də Null yoxlayın
C Adım 3 -də Null yoxlayın

Addım 3. Səhvlərin qarşısını almaq üçün əvvəlcə NULL yazın (isteğe bağlı)

PTR == NULL metodunun əsas dezavantajı, təsadüfən ptr = NULL yazmaq şansınızdır və bu göstəriciyə NULL dəyəri təyin edir. Bu böyük bir baş ağrısına səbəb ola bilər. Bərabərlik testi operandlara simmetrik olaraq baxdığından yazaraq eyni nəticəni əldə edə bilərsiniz. əgər (NULL == ptr) əvəzinə Təsadüfi NULL = ptr sadə bir kompilyasiya xətası yaratdığından bu, daha çox yazım səhvlərinə davamlıdır.

Bu, bəzi proqramçılar üçün bir az yöndəmsiz görünür, amma tamamilə etibarlıdır. İstifadə etdiyiniz yanaşma yalnız şəxsi seçiminizə və tərtibçinizin if (ptr = NULL) səhvini aşkar etməkdə nə qədər yaxşı olduğuna bağlıdır

C Adım 4 -də Null yoxlayın
C Adım 4 -də Null yoxlayın

Addım 4. Dəyişənin doğru olub olmadığını yoxlayın

Sadə əgər (ptr) ptr -in DOĞRU olub olmadığını yoxlayır. Əgər ptr NULL olarsa və ya ptr 0 olarsa YANLIQ qaytaracaq. Fərqin bir çox hallarda əhəmiyyəti yoxdur, amma unutmayın ki, bunlar bütün memarlıqlarda eyni deyil.

Bunun tərsidir əgər (! ptr)ptr FALSE olarsa TRUE qaytaracaq.

2 -ci hissə 2: Səhvlərdən qaçınmaq

C Adım 5 -də Null yoxlayın
C Adım 5 -də Null yoxlayın

Addım 1. NULL yoxlamadan əvvəl göstərici qurun

Ümumi bir səhv, yeni yaradılan bir göstəricinin NULL dəyərə sahib olduğunu düşünməkdir. Bu doğru deyil. Təyin edilməmiş göstərici hələ də yaddaş ünvanına işarə edir, yalnız göstərdiyiniz ünvan deyil. Bu yararsız ünvanı təsadüfən istifadə etməmək üçün yeni yaradılmış və ya yeni azad edilmiş göstəriciləri NULL olaraq təyin etmək adi bir tətbiqdir.

  • Bu səhvdən çəkinin:

    char *ptr;

    əgər (ptr == NULL)

    {

    // Bu FALSE qaytaracaq. Göstəriciyə etibarlı bir dəyər təyin edilmişdir.

    }

  • Bunun əvəzinə yazın:

    char *ptr = NULL; // Bu göstərici NULL təyin edir

    əgər (ptr == NULL)

    {

    // Göstərici yenidən təyin edilmədikdə bu, DOĞRU qaytaracaq.

    }

C Adım 6 -da Null yoxlayın
C Adım 6 -da Null yoxlayın

Addım 2. NULL qaytara biləcək funksiyalara diqqət yetirin

Bir funksiya NULL qaytara bilirsə, bunun bir ehtimal olub olmadığını və bunun kodunuzda sonradan problemlərə səbəb olub -olmayacağını düşünün. Null yoxlama istifadə edərək malloc funksiyasına bir nümunə (əgər (ptr)) yalnız etibarlı dəyərləri olan göstəriciləri idarə etməsini təmin etmək üçün:

  • int * ptr = malloc (N * sizeof (int));

    əgər (ptr) {

    int i;

    üçün (i = 0; i <N; ++ i)

    ptr = i;

    }

C Addım 7 -də Null yoxlayın
C Addım 7 -də Null yoxlayın

Addım 3. NULL -un 0 olduğunu anlayın, amma aydınlıq üçün göstəricilərlə işləyərkən hər zaman 0 deyil, NULL istifadə etməlisiniz

Tarixən C, NULL -u 0 (yəni 0x00) sayı kimi təmsil edirdi. Hal -hazırda bir az daha mürəkkəb ola bilər və əməliyyat sisteminə görə dəyişir. Ümumiyyətlə NULL istifadə edərək yoxlaya bilərsiniz ptr == 0, amma bunun problem yarada biləcəyi künc halları var. Bəlkə də daha əhəmiyyətlisi, NULL istifadə etmək, kodunuzu oxuyan digər insanlar üçün göstəricilərlə işlədiyinizi açıq şəkildə göstərir.

İpuçları

Başqaları kimi döngələrdə bu çekdən istifadə edə bilərsiniz: isə (NULL == ptr) {

Tövsiyə: