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 işaretçi bildirdiğinizde, otomatik olarak anlamlı bir şeyi göstermez. Başlatılmamış bir işaretçi rastgele bellek adresleri içerir ve bu işaretçiyi kullanmaya çalışırsanız ciddi hatalara yol açabilir. Güvenli programlama için boş işaretçilerin vazgeçilmez olduğu nokta burasıdır.

Null işaretçisi, açıkça hiçbir şeyi göstermeyen bir işaretçidir. Modern C++'ta, bir null işaretçisini nullptr ile başlatarak 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çiyi başvurusunu kaldırarak kullanmaya çalışmadan önce null olup olmadığını kontrol edebilirsiniz.

Herhangi bir işaretçiyi kullanmadan önce, basit bir if ifadesi kullanarak onun null olmadığını doğrulamalısınız:

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

Bu uygulama, geçersiz bellek konumlarına erişim nedeniyle programınızın çökmesini önler. İşaretçileri bildirirken her zaman nullptr ile başlatın ve başvuruyu kaldırmadan önce null olup olmadıklarını kontrol edin.

challenge icon

Görev

Kolay

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

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

  • "valid" veya "null" olacak bir dize

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

  1. data adlı bir tamsayı değişkeni tanımlayın ve 42 değeriyle başlatın
  2. ptr adlı bir pointer tanımlayın
  3. Girdi "valid" ise data'nın adresini ptr'ye atayın
  4. Girdi "null" ise nullptr'yi ptr'ye atayın
  5. Kullanmaya çalışmadan önce ptr'nin null olmadığını kontrol etmek için bir if deyimi 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 çıktı biçimini kullanın:

Value: [value]

Null pointer'lar için şu biçimi 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 tanımla
    int data = 42;
    
    // TODO: Kodunuzu buraya yazın
    // - ptr adında bir işaretçi tanımla
    // - Girdiyi kontrol et ve ptr'ye uygun değeri ata
    // - İşaretçiyi güvenli bir şekilde kontrol etmek ve kullanmak için if ifadesini 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