Menu
Coddy logo textTech

Wskaźniki zerowe

Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 4 z 56.

Gdy deklarujesz wskaźnik, nie wskazuje on automatycznie na nic konkretnego. Niezainicjalizowany wskaźnik zawiera losowe adresy pamięci, co może prowadzić do poważnych błędów, jeśli spróbujesz go użyć. Właśnie dlatego wskaźniki null są niezbędne do bezpiecznego programowania.

Wskaźnik pusty to wskaźnik, który jawnie wskazuje na nic. We współczesnym C++ tworzysz pusty wskaźnik, inicjalizując go wartością nullptr:

int* ptr = nullptr;  // ptr jest teraz wskaźnikiem pustym

Słowo kluczowe nullptr oznacza, że wskaźnik nie wskazuje żadnego prawidłowego obszaru pamięci. Jest to znacznie bezpieczniejsze niż pozostawienie wskaźnika niezainicjalizowanego, ponieważ możesz sprawdzić, czy wskaźnik ma wartość null, zanim spróbujesz go wyłuskać.

Przed użyciem dowolnego wskaźnika sprawdź za pomocą prostego warunku if, czy nie jest równy null:

if (ptr != nullptr) {
    // Można tu bezpiecznie użyć *ptr
    int value = *ptr;
}

Ta praktyka zapobiega awariom programu spowodowanym dostępem do nieprawidłowych lokalizacji pamięci. Zawsze inicjalizuj wskaźniki wartością nullptr podczas ich deklarowania i sprawdzaj, czy nie są równe null, zanim je wyłuskasz.

challenge icon

Wyzwanie

Łatwy

Utwórz program, który demonstruje bezpieczne używanie wskaźników, sprawdzając, czy wskaźniki mają wartość null, zanim zostaną wyłuskane.

Dane wejściowe będą miały następującą postać:

  • Ciąg znaków, który będzie równy "valid" lub "null"

Twój program powinien:

  1. Zadeklarować zmienną całkowitą o nazwie data i zainicjalizować ją wartością 42
  2. Zadeklarować wskaźnik o nazwie ptr
  3. Jeśli dane wejściowe to "valid", przypisać adres zmiennej data do wskaźnika ptr
  4. Jeśli dane wejściowe to "null", przypisać nullptr do wskaźnika ptr
  5. Użyć instrukcji if, aby sprawdzić, czy wskaźnik ptr nie ma wartości null, zanim zostanie użyty
  6. Jeśli wskaźnik nie ma wartości null, wypisać wartość, na którą wskazuje
  7. Jeśli wskaźnik ma wartość null, wypisać komunikat o bezpieczeństwie

Użyj dokładnie następującego formatu wyjściowego:

Value: [value]

W przypadku wskaźników null użyj tego formatu:

Pointer is null - cannot dereference

Spróbuj swoich sił

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

int main() {
    // Wczytaj dane wejściowe
    string input;
    cin >> input;
    
    // Zadeklaruj zmienną data
    int data = 42;
    
    // TODO: Napisz tutaj swój kod
    // - Zadeklaruj wskaźnik o nazwie ptr
    // - Sprawdź dane wejściowe i przypisz odpowiednią wartość do ptr
    // - Użyj instrukcji if, aby bezpiecznie sprawdzić wskaźnik i go użyć
    
    return 0;
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator C++ online