Menu
Coddy logo textTech

NULL Pointer'lar

Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 5 / 63.

Bazen bir işaretçiyi tanımlamanız gerekir, ancak ona hemen atayabileceğiniz geçerli bir bellek adresiniz olmayabilir. Bu durumlarda, işaretçiyi NULL adı verilen özel bir değerle başlatmak önemlidir.

NULL işaretçisi, herhangi bir geçerli bellek adresini göstermeyen bir işaretçidir. C'de NULL genellikle 0 veya (void*)0 olarak tanımlanır. Bir işaretçiyi NULL ile başlattığınızda, bunun şu anda yararlı herhangi bir şeyi göstermediğini açıkça belirtmiş olursunuz.

int *ptr = NULL;    // İşaretçiyi NULL olarak başlat
printf("%p", ptr);  // Bu, 0 veya (nil) yazdıracaktır

İşaretçileri NULL olarak başlatmak, işaretçinizin rastgele çöp değerler içermesini önlediği için iyi bir programlama uygulaması olarak kabul edilir. Başlatılmamış bir işaretçi herhangi bir rastgele bellek adresini içerebilir; bu da yanlışlıkla onu kullanmaya çalışırsanız öngörülemeyen davranışlara yol açabilir.

Bir işaretçiyi kullanmadan önce NULL olup olmadığını kontrol edebilirsiniz; bu, çökmeleri önlemeye yardımcı olur ve kodunuzu daha sağlam hale getirir. Programlarınız daha karmaşık hale geldikçe bu güvenlik kontrolü özellikle önemli hale gelir.

challenge icon

Görev

Kolay

Uygun NULL işaretçisi başlatma ve denetimini gösteren bir C programı yazın. Programınız şunları yapmalıdır:

  1. safe_ptr adlı bir tamsayı işaretçisi bildirin ve NULL olarak başlatın
  2. char_ptr adlı bir karakter işaretçisi bildirin ve NULL olarak başlatın
  3. Bir if ifadesi kullanarak safe_ptr değerinin NULL olup olmadığını denetleyin ve NULL ise "safe_ptr is NULL" yazdırın
  4. Bir if ifadesi kullanarak char_ptr değerinin NULL olup olmadığını denetleyin ve NULL ise "char_ptr is NULL" yazdırın
  5. safe_ptr biçim belirteciyle printf kullanarak %p içinde saklanan bellek adresini yazdırın
  6. char_ptr biçim belirteciyle printf kullanarak %p içinde saklanan bellek adresini yazdırın

Çıktınız aşağıdaki biçimde sonuçları göstermelidir:

safe_ptr is NULL
char_ptr is NULL
safe_ptr address: [address]
char_ptr address: [address]

Gerçek bellek adresleri, sisteminize bağlı olarak 0, (nil) veya benzer bir NULL gösterimi şeklinde görünebilir; ancak biçim ve etiketler yukarıda gösterildiği gibi tam olarak eşleşmelidir.

Kendin dene

#include <stdio.h>

int main() {
    // YAPILACAK: Kodunuzu buraya yazın
    // İşaretçilerinizi tanımlayın ve başlatın
    // İşaretçilerin NULL olup olmadığını kontrol edin
    // Gerekli çıktıyı yazdırın
    
    return 0;
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online C derleyicisi