Menu
Coddy logo textTech

Wskaźniki NULL

Część sekcji Logika i sterowanie przepływem ścieżki C w Coddy. Lekcja 5 z 63.

Czasami musisz zadeklarować wskaźnik, ale nie masz od razu prawidłowego adresu pamięci, który możesz mu przypisać. W takich sytuacjach ważne jest, aby zainicjalizować wskaźnik specjalną wartością o nazwie NULL.

Wskaźnik NULL to wskaźnik, który nie wskazuje żadnego prawidłowego adresu pamięci. W C NULL jest zazwyczaj definiowane jako 0 lub (void*)0. Inicjalizując wskaźnik wartością NULL, wyraźnie określasz, że obecnie nie wskazuje on niczego użytecznego.

int *ptr = NULL;    // Zainicjalizuj wskaźnik wartością NULL
printf("%p", ptr);  // To wypisze 0 lub (nil)

Inicjalizowanie wskaźników wartością NULL jest uznawane za dobrą praktykę programistyczną, ponieważ zapobiega przechowywaniu przez wskaźnik przypadkowych, bezwartościowych wartości. Niezainicjalizowany wskaźnik może zawierać dowolny przypadkowy adres pamięci, co może prowadzić do nieprzewidywalnego działania, jeśli przypadkowo spróbujesz go użyć.

Możesz sprawdzić, czy wskaźnik ma wartość NULL, zanim go użyjesz, co pomaga zapobiegać awariom i zwiększa niezawodność Twojego kodu. Takie sprawdzenie bezpieczeństwa staje się szczególnie ważne, gdy Twoje programy stają się bardziej złożone.

challenge icon

Wyzwanie

Łatwy

Napisz program w C, który demonstruje prawidłową inicjalizację wskaźników NULL i sprawdzanie ich wartości. Twój program powinien:

  1. zadeklarować wskaźnik do liczby całkowitej o nazwie safe_ptr i zainicjalizować go wartością NULL
  2. zadeklarować wskaźnik do znaku o nazwie char_ptr i zainicjalizować go wartością NULL
  3. sprawdzić, czy safe_ptr ma wartość NULL, używając instrukcji if, i wypisać "safe_ptr is NULL", jeśli tak jest
  4. sprawdzić, czy char_ptr ma wartość NULL, używając instrukcji if, i wypisać "char_ptr is NULL", jeśli tak jest
  5. wypisać adres pamięci przechowywany w safe_ptr, używając printf ze specyfikatorem formatu %p
  6. wypisać adres pamięci przechowywany w char_ptr, używając printf ze specyfikatorem formatu %p

Wynik powinien wyświetlać rezultaty w następującym formacie:

safe_ptr is NULL
char_ptr is NULL
safe_ptr address: [address]
char_ptr address: [address]

Rzeczywiste adresy pamięci będą wyświetlane jako 0, (nil) lub podobna reprezentacja wartości NULL, zależnie od systemu, ale format i etykiety muszą dokładnie odpowiadać powyższym.

Spróbuj swoich sił

#include <stdio.h>

int main() {
    // TODO: Napisz tutaj swój kod
    // Zadeklaruj i zainicjalizuj wskaźniki
    // Sprawdź, czy wskaźniki mają wartość NULL
    // Wypisz wymagany wynik
    
    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 sterowanie przepływem

Poćwicz samodzielnie: Kompilator C online