Jak sprawdzić wartość Null w C: 7 kroków (ze zdjęciami)

Spisu treści:

Jak sprawdzić wartość Null w C: 7 kroków (ze zdjęciami)
Jak sprawdzić wartość Null w C: 7 kroków (ze zdjęciami)

Wideo: Jak sprawdzić wartość Null w C: 7 kroków (ze zdjęciami)

Wideo: Jak sprawdzić wartość Null w C: 7 kroków (ze zdjęciami)
Wideo: How to Change the Icon Size in GIMP - [ Make GIMP Icons Bigger ] 2024, Może
Anonim

W języku C NULL jest stałą symboliczną, która zawsze wskazuje na nieistniejący punkt w pamięci. Chociaż wielu programistów traktuje to jako równe 0, jest to uproszczenie, które może cię później potykać. Najlepiej sprawdzić swoje wskaźniki bezpośrednio względem NULL i użyć 0 w innych kontekstach. Dzięki temu Twój kod będzie czysty i łatwy do zrozumienia, ponieważ będziesz wiedział, że pracujesz ze wskaźnikami za każdym razem, gdy zobaczysz NULL.

Kroki

Część 1 z 2: Wykonywanie testu zerowego

Sprawdź wartość Null w kroku C 1
Sprawdź wartość Null w kroku C 1

Krok 1. Użyj standardowego kodu sprawdzania wartości zerowej

Poniżej przedstawiono najbardziej oczywisty sposób napisania sprawdzenia wartości NULL. Użyjemy ptr w tym artykule jako nazwę sprawdzanego wskaźnika.

  • if(ptr == NULL)

    {

    // kod, jeśli wskaźnik ma wartość NULL

    } w przeciwnym razie {

    // kod, jeśli nie NULL

    }

Sprawdź wartość Null w kroku C 2
Sprawdź wartość Null w kroku C 2

Krok 2. Przetestuj pod kątem dowolnej wartości oprócz NULL

Czasami wygodniej jest zamiast tego testować nierówności. Tutaj nie ma niespodzianek:

  • jeśli (ptr != NULL) {

    // kod, jeśli nie NULL

    }

Sprawdź Null w C Krok 3
Sprawdź Null w C Krok 3

Krok 3. Najpierw wpisz NULL, aby uniknąć błędów (opcjonalnie)

Główną wadą metody PTR == NULL jest prawdopodobieństwo, że zamiast tego przypadkowo wpiszesz ptr = NULL, przypisując wartość NULL do tego wskaźnika. Może to spowodować silny ból głowy. Ponieważ testowanie (nie)równości traktuje operandy symetrycznie, możesz uzyskać dokładnie ten sam wynik, pisząc jeśli (NULL == ptr) zamiast. Jest to bardziej odporne na literówki, ponieważ przypadkowe NULL = ptr powoduje prosty błąd kompilacji.

Dla niektórych programistów wygląda to trochę niezręcznie, ale jest całkowicie poprawne. To, które podejście zastosujesz, zależy tylko od osobistych preferencji i tego, jak dobry kompilator jest w wykrywaniu błędu if (ptr = NULL)

Sprawdź wartość Null w kroku C 4
Sprawdź wartość Null w kroku C 4

Krok 4. Sprawdź, czy zmienna jest prawdziwa

Prosty jeśli (ptr) sprawdza, czy ptr ma wartość PRAWDA. Zwróci FALSE, jeśli ptr jest NULL lub jeśli ptr wynosi 0. W wielu przypadkach rozróżnienie nie ma znaczenia, ale pamiętaj, że nie są one identyczne we wszystkich architekturach.

Odwrotnością tego jest jeśli (!ptr), co zwróci TRUE, jeśli ptr jest FALSE.

Część 2 z 2: Unikanie błędów

Sprawdź Null w C Krok 5
Sprawdź Null w C Krok 5

Krok 1. Ustaw wskaźnik przed sprawdzeniem NULL

Częstym błędem jest założenie, że nowo utworzony wskaźnik ma wartość NULL. To nie jest prawda. Nieprzypisany wskaźnik nadal wskazuje na adres pamięci, ale nie ten, który podałeś. Powszechną praktyką jest ustawianie nowo utworzonych lub nowo zwolnionych wskaźników na NULL, aby upewnić się, że ten nieprzydatny adres nie zostanie przypadkowo użyty.

  • Unikaj tego błędu:

    znak *ptr;

    if(ptr == NULL)

    {

    //To zwróci FALSE. Wskaźnikowi przypisano prawidłową wartość.

    }

  • Zamiast tego napisz:

    znak *ptr = NULL; //To przypisuje wskaźnik do NULL

    if(ptr == NULL)

    {

    //Zwróci to TRUE, jeśli wskaźnik nie został ponownie przypisany.

    }

Sprawdź wartość Null w kroku C 6
Sprawdź wartość Null w kroku C 6

Krok 2. Zwróć uwagę na funkcje, które mogą zwrócić NULL

Jeśli funkcja może zwrócić NULL, zastanów się, czy jest to możliwe i czy spowodowałoby to problemy w dalszej części kodu. Oto przykład funkcji malloc przy użyciu sprawdzania wartości null (jeśli (ptr)), aby upewnić się, że obsługuje tylko wskaźniki z poprawnymi wartościami:

  • int *ptr = malloc(N * sizeof(int));

    jeśli (ptr) {

    wew;

    dla (i = 0; i < N; ++i)

    ptr = ja;

    }

Sprawdź wartość Null w C kroku 7
Sprawdź wartość Null w C kroku 7

Krok 3. Zrozum, że NULL to 0, ale zawsze powinieneś używać NULL zamiast 0 podczas pracy ze wskaźnikami dla jasności

Historycznie C reprezentował NULL jako liczbę 0 (czyli 0x00). W dzisiejszych czasach może to być nieco bardziej skomplikowane i zależy od systemu operacyjnego. Zwykle możesz sprawdzić NULL za pomocą ptr == 0, ale zdarzają się przypadki, w których może to powodować problem. Co być może ważniejsze, użycie NULL sprawia, że staje się oczywiste, że pracujesz ze wskaźnikami dla innych osób czytających Twój kod.

Porady

Możesz użyć tej pętli check in while tak samo, jak każdej innej: podczas gdy (NULL == ptr) {

Zalecana: