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.
Görev
KolayUygun NULL işaretçisi başlatma ve denetimini gösteren bir C programı yazın. Programınız şunları yapmalıdır:
safe_ptradlı bir tamsayı işaretçisi bildirin ve NULL olarak başlatınchar_ptradlı bir karakter işaretçisi bildirin ve NULL olarak başlatın- Bir if ifadesi kullanarak
safe_ptrdeğerinin NULL olup olmadığını denetleyin ve NULL ise "safe_ptr is NULL" yazdırın - Bir if ifadesi kullanarak
char_ptrdeğerinin NULL olup olmadığını denetleyin ve NULL ise "char_ptr is NULL" yazdırın safe_ptrbiçim belirteciyleprintfkullanarak%piçinde saklanan bellek adresini yazdırınchar_ptrbiçim belirteciyleprintfkullanarak%piç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;
}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
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ıKendi başına pratik yap: Online C derleyicisi