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 (pointer) tanımladığınızda, otomatik olarak anlamlı bir şeye işaret etmez. Başlatılmamış bir işaretçi rastgele bellek adresleri içerir, bu da onu kullanmaya çalıştığınızda ciddi hatalara yol açabilir. İşte bu noktada, güvenli programlama için null işaretçiler (null pointers) vazgeçilmez hale gelir.

Null pointer, açıkça hiçbir şeyi işaret etmeyen bir pointer'dır. Modern C++'ta, bir null pointer'ı nullptr ile ilklendirerek oluşturursunuz:

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

nullptr anahtar kelimesi, 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 gösterdiği değere erişmeye çalışmadan önce işaretçinin null olup olmadığını kontrol edebilirsiniz.

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

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

Bu uygulama, programınızın geçersiz bellek konumlarına erişmesi nedeniyle çökmesini önler. İşaretçileri bildirdiğinizde her zaman nullptr olarak başlatın ve başvuruyu kaldırmadan (dereferencing) önce null olup olmadığını kontrol edin.

challenge icon

Görev

Kolay

İşaretçileri (pointers) dereference etmeden önce null olup olmadıklarını kontrol ederek güvenli işaretçi kullanımını gösteren bir program oluşturun.

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

  • "valid" veya "null" değerlerinden biri olan bir dize (string)

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

  1. data adında bir tam sayı (integer) değişkeni tanımlayın ve 42 değeriyle başlatın
  2. ptr adında bir işaretçi (pointer) tanımlayın
  3. Eğer girdi "valid" ise, data değişkeninin adresini ptr işaretçisine atayın
  4. Eğer girdi "null" ise, ptr işaretçisine nullptr atayın
  5. İşaretçiyi kullanmaya çalışmadan önce ptr değişkeninin null olmadığını kontrol etmek için bir if-ifadesi kullanın
  6. Eğer işaretçi null değilse, işaret ettiği değeri yazdırın
  7. Eğer işaretçi null ise, bir güvenlik mesajı yazdırın

Aşağıdaki tam çıktı formatını kullanın:

Value: [value]

Null işaretçiler için şu formatı kullanın:

Pointer is null - cannot dereference

Kopya kağıdı

Tanımsız davranışlardan kaçınmak için işaretçileri nullptr ile başlatın:

int* ptr = nullptr;  // ptr artık bir null işaretçidir

İçeriğine erişmeden (dereferencing) önce bir işaretçinin null olup olmadığını her zaman kontrol edin:

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

nullptr anahtar kelimesi, işaretçinin herhangi bir geçerli bellek konumunu göstermediğini açıkça belirtir; bu da kodunuzu daha güvenli hale getirir ve geçersiz belleğe erişimden kaynaklanan çökmeleri önler.

Kendin dene

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

int main() {
    // Girdiyi oku
    string input;
    cin >> input;
    
    // Veri değişkenini tanımla
    int data = 42;
    
    // YAPILACAK: Kodunuzu buraya yazın
    // - ptr adında bir işaretçi (pointer) tanımlayın
    // - Girdiyi kontrol edin ve ptr'ye uygun değeri atayın
    // - İşaretçiyi güvenli bir şekilde kontrol etmek ve kullanmak için if ifadesini kullanı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.

Mantık & Akış bölümündeki tüm dersler