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ırPointer'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.
Görev
KolayUygun NULL işaretçi (pointer) başlatma ve kontrolünü gösteren bir C programı yazın. Programınız şunları yapmalıdır:
safe_ptradında bir tam sayı (integer) işaretçisi tanımlayın ve onu NULL olarak başlatınchar_ptradında bir karakter (character) işaretçisi tanımlayın ve onu NULL olarak başlatın- Bir if ifadesi kullanarak
safe_ptr'nin NULL olup olmadığını kontrol edin ve eğer öyleyse "safe_ptr is NULL" yazdırın - Bir if ifadesi kullanarak
char_ptr'nin NULL olup olmadığını kontrol edin ve eğer öyleyse "char_ptr is NULL" yazdırın printfve%pformat belirleyicisini kullanaraksafe_ptriçinde saklanan bellek adresini yazdırınprintfve%pformat belirleyicisini kullanarakchar_ptriç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;
}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
1Pointer Temelleri
Pointer Nedir?Pointer TanımlamaAdres Operatörü (&)Dereference Operatörü (*)NULL Pointer'larÖzet: Pointer Temelleri4Proje: Basit Metin Aracı
Projeye Genel BakışKarakter Sayma2İşaretçiler ve Diziler
İşaretçi Olarak Dizi İsimleriDizi Elemanları - İşaretçilerİşaretçi Aritmetiğiİşaretçilerin KarşılaştırılmasıÖzet: İşaretçi ile Dizi Gezinme5İşaretçiler ve Fonksiyonlar
Değer ile GeçmeFonksiyonlara İşaretçi Göndermeİşaretçiler ile Değişkenleri DeğiştirmeKlasik Bir Örnek: SwapFonksiyonlara Dizi GöndermeÖzet: Fonksiyon İşaretçi Argümanları8Yapılar ve İşaretçiler
Yapılara İşaretçilerOk Operatörü (->)Yapıları Değer ile AktarmaYapı İşaretçilerini AktarmaYapıların Dinamik TahsisiÖzet: Yapıyı Değiştirme - Ptr11Son Tekrar Görevleri
Tekrar: Dinamik String BirleştirmeTekrar: Struct DizisiTekrar: Kelime Frekans Sayacı3Karakter Dizileri ve Stringler
char Dizisi Olarak StringlerNull Sonlandırıcıscanf ile String Girişistrlen() Kullanımıstrcpy() Kullanımıstrcat() Kullanımıstrcmp() KullanımıÖzet: Temel String Fonksiyonları