Menu
Coddy logo textTech

Null İşaretçiler

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

Bir pointer bildirdiğinizde, otomatik olarak anlamlı bir şeyi göstermez. Başlatılmamış bir pointer rastgele bellek adresleri içerir ve onu kullanmaya çalışırsanız ciddi hatalara yol açabilir. Güvenli programlama için null pointer'lar işte bu noktada büyük önem kazanır.

Null pointer, açıkça hiçbir şeyi göstermeyen bir pointer'dır. Modern C++'ta, onu nullptr ile başlatarak bir null pointer oluşturursun:

int* ptr = nullptr;  // ptr artık bir null pointer

nullptr anahtar sözcüğü, işaretçinin herhangi bir geçerli bellek konumunu göstermediğini belirtir. Bu, bir işaretçiyi başlatılmamış bırakmaktan çok daha güvenlidir; çünkü işaretçinin null olup olmadığını, işaretçinin referansını kaldırmayı denemeden önce kontrol edebilirsiniz.

Herhangi bir pointer kullanmadan önce, basit bir if ifadesi kullanarak null olmadığını doğrulamalısın:

if (ptr != nullptr) {
    // Burada *ptr kullanmak güvenli
    int value = *ptr;
}

Bu uygulama, geçersiz bellek konumlarına erişilmesi nedeniyle programınızın çökmesini önler. pointer'ları bildirirken her zaman nullptr ile başlatın ve dereference etmeden önce check edin.

challenge icon

Görev

Kolay

Dereference işlemi yapmadan önce null pointer'ları kontrol ederek güvenli pointer kullanımını gösteren bir program oluşturun.

Aşağıdaki input sağlanacaktır:

  • "valid" veya "null" olacak bir string

Programınız şunları yapmalıdır:

  1. data adlı bir tamsayı variable Declare edin ve 42 değeriyle başlatın
  2. ptr adlı bir pointer Declare edin
  3. input "valid" ise data'nın adresini ptr'ye assign edin
  4. input "null" ise nullptr değerini ptr'ye assign edin
  5. Kullanmaya çalışmadan önce ptr'nin null olmadığını check etmek için bir if-statement kullanın
  6. Pointer null değilse, işaret ettiği değeri yazdırın
  7. Pointer null ise bir güvenlik mesajı yazdırın

Aşağıdaki tam output formatını kullanın:

Value: [value]

Null pointer'lar için bu formatı kullanın:

Pointer is null - cannot dereference

Kendin dene

#include <iostream>
#include <string>
using namespace std;

int main() {
    // Girdiyi oku
    string input;
    cin >> input;
    
    // data değişkenini bildir
    int data = 42;
    
    // TODO: Kodunu buraya yaz
    // - ptr adında bir işaretçi bildir
    // - Girdiyi kontrol et ve ptr'ye uygun değeri ata
    // - İşaretçiyi güvenli şekilde kontrol edip kullanmak için if-statement kullan
    
    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