Menu
Coddy logo textTech

NULL Pointer'lar

Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 5 / 63.

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

Bir NULL işaretçi (NULL pointer), 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 olarak başlattığınızda, onun şu anda yararlı 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

Pointer'ları NULL olarak başlatmak, pointer'ınızın rastgele çöp değerler içermesini engellediği için iyi bir programlama pratiği olarak kabul edilir. Başlatılmamış bir pointer herhangi bir rastgele bellek adresi içerebilir; bu da onu yanlışlıkla 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çi (pointer) başlatma ve kontrolünü gösteren bir C programı yazın. Programınız şunları yapmalıdır:

  1. safe_ptr adında bir tam sayı (integer) işaretçisi tanımlayın ve onu NULL olarak başlatın
  2. char_ptr adında bir karakter (character) işaretçisi tanımlayın ve onu NULL olarak başlatın
  3. Bir if ifadesi kullanarak safe_ptr'nin NULL olup olmadığını kontrol edin ve eğer öyleyse "safe_ptr is NULL" yazdırın
  4. Bir if ifadesi kullanarak char_ptr'nin NULL olup olmadığını kontrol edin ve eğer öyleyse "char_ptr is NULL" yazdırın
  5. printf ve %p format belirleyicisini kullanarak safe_ptr içinde saklanan bellek adresini yazdırın
  6. printf ve %p format belirleyicisini kullanarak char_ptr içinde saklanan bellek adresini yazdırın

Çıktınız sonuçları aşağıdaki formatta görüntülemelidir:

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 benzeri bir NULL temsili olarak görünecektir, ancak format ve etiketler yukarıda gösterilenle tam olarak eşleşmelidir.

Kopya kağıdı

Bir 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.

Rastgele çöp değerleri önlemek için işaretçileri NULL ile başlatın:

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

Çökmeleri önlemek için bir işaretçiyi kullanmadan önce NULL olup olmadığını kontrol edin:

if (ptr == NULL) {
    // NULL durumunu işlemek için güvenli
}

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.

Logic & Flow bölümündeki tüm dersler