C'de Null Nasıl Kontrol Edilir: 7 Adım (Resimlerle)

İçindekiler:

C'de Null Nasıl Kontrol Edilir: 7 Adım (Resimlerle)
C'de Null Nasıl Kontrol Edilir: 7 Adım (Resimlerle)

Video: C'de Null Nasıl Kontrol Edilir: 7 Adım (Resimlerle)

Video: C'de Null Nasıl Kontrol Edilir: 7 Adım (Resimlerle)
Video: inkscape resim kirpma ; yazı yazma 2024, Mayıs
Anonim

C'de NULL, her zaman bellekte var olmayan bir noktaya işaret eden sembolik bir sabittir. Birçok programcı bunu 0'a eşit olarak görse de, bu daha sonra sizi yanılgıya düşürebilecek bir basitleştirmedir. İşaretçilerinizi doğrudan NULL'a karşı kontrol etmek ve diğer bağlamlarda 0 kullanmak en iyisidir. NULL'u her gördüğünüzde işaretçiler ile çalıştığınızı bileceğiniz için bu, kodunuzu temiz ve anlaşılması kolay tutar.

adımlar

Bölüm 1 / 2: Boş Denetim Gerçekleştirme

C Adım 1'de Null'u Kontrol Edin
C Adım 1'de Null'u Kontrol Edin

Adım 1. Standart boş kontrol kodunu kullanın

Boş bir çek yazmanın en açık yolu aşağıdadır. kullanacağız ptr bu makalede, kontrol ettiğiniz işaretçinin adı olarak.

  • if(ptr == NULL)

    {

    // işaretçi NULL ise kod

    } Başka {

    // NULL değilse kod

    }

C Adım 2'de Null'u Kontrol Edin
C Adım 2'de Null'u Kontrol Edin

Adım 2. NULL dışında herhangi bir değer için test edin

Bazen bunun yerine eşitsizliği test etmek daha uygundur. Burada sürpriz yok:

  • if (ptr != NULL) {

    // NULL değilse kod

    }

C Adım 3'te Null'u Kontrol Edin
C Adım 3'te Null'u Kontrol Edin

Adım 3. Hataları önlemek için önce NULL yazın (isteğe bağlı)

PTR == NULL yönteminin ana dezavantajı, bunun yerine yanlışlıkla ptr = NULL yazmanız ve bu işaretçiye NULL değeri atamanızdır. Bu büyük bir baş ağrısına neden olabilir. Eşitlik (in)eşitlik testi işlenenleri simetrik olarak ele aldığından, yazarak tam olarak aynı sonucu elde edebilirsiniz. if (NULL == ptr) Bunun yerine. Bu, yanlışlıkla bir NULL = ptr basit bir derleme hatası oluşturduğundan, yazım hatasına daha dayanıklıdır.

Bu, bazı programcılar için biraz garip görünüyor, ancak tamamen geçerli. Hangi yaklaşımı kullanacağınız yalnızca kişisel tercihinize ve derleyicinizin if (ptr = NULL) hatasını algılamada ne kadar iyi olduğuna bağlıdır

C Adım 4'te Null'u Kontrol Edin
C Adım 4'te Null'u Kontrol Edin

Adım 4. Değişkenin doğru olup olmadığını test edin

Basit eğer (ptr) ptr'nin TRUE olup olmadığını test eder. ptr NULL ise veya ptr 0 ise FALSE döndürür. Çoğu durumda ayrım önemli değildir, ancak bunların tüm mimarilerde aynı olmadığını unutmayın.

Bunun tersi eğer (!ptr)ptr YANLIŞ ise TRUE değerini döndürür.

Bölüm 2/2: Hatalardan Kaçınmak

C Adım 5'te Null'u Kontrol Edin
C Adım 5'te Null'u Kontrol Edin

Adım 1. NULL'u kontrol etmeden önce bir işaretçi ayarlayın

Yaygın bir hata, yeni oluşturulan bir işaretçinin NULL değerine sahip olduğunu varsaymaktır. Bu doğru değil. Atanmamış bir işaretçi, belirttiğiniz değil, yine de bir bellek adresine işaret eder. Bu yararsız adresi yanlışlıkla kullanmadığınızdan emin olmak için yeni oluşturulan veya yeni serbest bırakılan işaretçileri NULL olarak ayarlamak yaygın bir uygulamadır.

  • Bu hatadan kaçının:

    karakter *ptr;

    if(ptr == NULL)

    {

    //Bu YANLIŞ döndürür. İşaretçiye geçerli bir değer atanmıştır.

    }

  • Bunun yerine şunu yazın:

    karakter *ptr = NULL; //Bu, işaretçiyi NULL'a atar

    if(ptr == NULL)

    {

    //İşaretçi yeniden atanmamışsa, bu TRUE değerini döndürür.

    }

C Adım 6'da Null'u Kontrol Edin
C Adım 6'da Null'u Kontrol Edin

Adım 2. NULL döndürebilecek işlevlere dikkat edin

Bir işlev NULL döndürebiliyorsa, bunun bir olasılık olup olmadığını ve bunun kodunuzda daha sonra sorunlara neden olup olmayacağını düşünün. İşte boş denetimi kullanan malloc işlevine bir örnek (eğer (ptr)) yalnızca geçerli değerlere sahip işaretçileri işlediğinden emin olmak için:

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

    eğer (ptr) {

    int i;

    için (i = 0; i < N; ++i)

    ptr = ben;

    }

C Adım 7'de Null'u Kontrol Edin
C Adım 7'de Null'u Kontrol Edin

Adım 3. NULL'un 0 olduğunu anlayın, ancak netlik için işaretçilerle çalışırken her zaman 0 yerine NULL kullanmalısınız

Tarihsel olarak C, NULL'u 0 (yani 0x00) sayısı olarak temsil ediyordu. Günümüzde biraz daha karmaşık hale gelebilir ve işletim sistemine göre değişir. Genellikle kullanarak NULL olup olmadığını kontrol edebilirsiniz. ptr == 0, ancak bunun bir soruna neden olabileceği köşe durumları vardır. Belki daha da önemlisi, NULL kullanmak, kodunuzu okuyan diğer insanlar için işaretçiler ile çalıştığınızı açıkça gösterir.

İpuçları

Bu check-in while döngüsünü tıpkı diğerleri gibi kullanabilirsiniz: while (NULL == ptr) {

Önerilen: