Null İşaretçiler
Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası — ders 4 / 56.
Bir pointer tanımladığınızda, otomatik olarak anlamlı bir şeye işaret etmez. Başlatılmamış bir pointer rastgele bellek adresleri içerir ve bu durum, onu kullanmaya çalıştığınızda ciddi hatalara yol açabilir. İşte bu noktada, güvenli programlama için null pointer'lar temel bir gereklilik haline gelir.
Null pointer (boş gösterici), açıkça hiçbir şeyi işaret etmeyen bir göstericidir. Modern C++'da, bir null pointer'ı nullptr ile ilklendirerek oluşturursunuz:
int* ptr = nullptr; // ptr artık bir null pointer'dırnullptr 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ü bir işaretçinin başvurusunu çözmeye çalışmadan önce null olup olmadığını kontrol edebilirsiniz.
Herhangi bir işaretçiyi 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 ile başlatın ve dereferans işleminden önce null kontrolü yapın.
Görev
Kolayİşaretçileri kullanmadan ö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"olacak bir dize
Programınız şunları yapmalıdır:
dataadında bir tam sayı değişkeni tanımlayın ve bu değişkeni42değeriyle başlatınptradında bir işaretçi tanımlayın- Eğer girdi
"valid"ise,datadeğişkeninin adresiniptrişaretçisine atayın - Eğer girdi
"null"ise,ptrişaretçisinenullptratayın ptrişaretçisini kullanmaya çalışmadan önce null olmadığını kontrol etmek için bir if-ifadesi kullanın- Eğer işaretçi null değilse, işaret ettiği değeri yazdırın
- 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 dereferenceKendin 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 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;
}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
1İşaretçiler ve Bellek
İşaretçi Nedir?Adres OperatörüDereference OperatörüNull İşaretçilerİşaretçiler ve Diziler'new' ile Dinamik Bellek'delete' ile Belleği Serbest BırakmaÖzet - İşaretçi Pratiği2Vektörler (Dinamik Diziler)
std::vector'a GirişBir Vektör OluşturmaEleman EklemeElemanlara ErişmeVektör BoyutuFor Döngüsü ile YinelemeAralık Tabanlı For DöngüsüEleman SilmeÖzet - Vektör İşlemleri3Proje: Görev Listesi Aracı
Projeye Genel BakışGörev Ekleme