Co to jest nullptr w C++

Co To Jest Nullptr W C



W C++ określona wartość wskaźnika o nazwie a wskaźnik zerowy służy do wskazania, że ​​wskaźnik nie odnosi się do żadnej prawidłowej lokalizacji w pamięci. W standardzie C++11 lub nowszym jest reprezentowany przez słowo kluczowe „ nullptr ” lub stałą wartością 0.

The wskaźnik zerowy pomysł jest kluczowy, ponieważ pomaga zapobiegać błędnym dostępom do pamięci, które mogą skutkować nieoczekiwanymi błędami w czasie wykonywania i awariami oprogramowania. Rozważmy scenariusz, w którym program próbuje odczytać lub zapisać adres pamięci, który albo nie został utworzony, albo został już cofnięty. Takie zachowanie jest niemożliwe do zdefiniowania w C++ i może spowodować poważne problemy w czasie wykonywania lub luki w zabezpieczeniach. Wskaźnik jest nieprawidłowy i nie należy go usuwać, jeśli łączy się z wartością pustą. Zakończenie programu, błędy segmentacji lub nieautoryzowany dostęp do pamięci to tylko kilka przykładów nieoczekiwanego zachowania, które może wystąpić podczas dereferencji wskaźnik zerowy .

Przykład nullptr w C++

#include
za pomocą przestrzeń nazw standardowe ;
int główny ( )
{
nullptr_t pi1, pi2 ;
Jeśli ( pi1 >= pi2 )
{
cout << „Wskaźnik 1 jest większy niż wartość wskaźnika 2” << koniec ;
}
w przeciwnym razie
{
cout << „Wskaźnik 2 jest większy niż wartość wskaźnika 1” << koniec ;
}
zwęglać * rozdz = pi1 ;
Jeśli ( rozdz == nullptr )
cout << „Zmienna wskaźnika ch ma wartość pustą z zerowym odwołaniem do adresu” << koniec ;
w przeciwnym razie
cout << „Zmienna wskaźnika ch nie jest wartością pustą, ma pewną wartość z odwołaniem do adresu” << koniec ;
powrót 0 ;
}

W powyższym kodzie używamy dwóch nullptrs i porównując je ze sobą. Następnie używamy wskaźnika znaku do sprawdzenia poprawności nullptr .







Wyjście



Powody, dla których warto używać nullptr w C++

Wskaźniki zerowe są często używane w programowaniu w C++ z kilku powodów:



1: Inicjowanie wskaźników

Kiedy deklarowana jest zmienna wskaźnika, zawsze powinna być inicjowana z prawidłową lokalizacją pamięci lub a wskaźnik zerowy . Dostęp do wskaźnika w dalszej części kodu pomaga zapobiegać niezadeklarowanemu zachowaniu.





2: Kod błędu

Funkcje mogą powrócić zerowe wskaźniki jako kody błędów, aby pokazać, że nie byli w stanie wykonać określonej akcji lub przydzielić pamięci.

3: Weryfikacja ważności wskaźnika

Weryfikacja poprawności wskaźnika przed dereferencją jest zawsze mądrym pomysłem. Zwiększa to niezawodność kodu i pomaga zapobiegać nieoczekiwanym błędom w czasie wykonywania.



4: Polimorfizm

W C++ wskaźniki klasy bazowej, które nie wskazują na żadne obiekty klas pochodnych, są reprezentowane przez zerowe wskaźniki . Jest to zwykle używane w programowaniu polimorficznym do obsługi funkcji zorientowanych obiektowo, takich jak dziedziczenie i funkcje wirtualne.

Wskaźniki zerowe nie należy mylić z wiszącymi lub niezainicjowanymi wskaźnikami, należy o tym pamiętać. Niezainicjowane wskaźniki mogą wskazywać dowolny adres w pamięci, ponieważ nie zostały zainicjowane wartością. Z drugiej strony wiszące wskaźniki to te, które odnoszą się do nieprawidłowych lub już cofniętych obszarów pamięci. W programowaniu w C++ zwisające wskaźniki i niezainicjowane wskaźniki mogą potencjalnie powodować problemy w czasie wykonywania.

Zalety używania nullptr w C++

Korzystanie z a nullptr .

1: Bezpieczeństwo

Ponieważ nullptr jest bardziej bezpieczny dla typów niż NULL, należy go zamiast tego użyć. Podczas gdy NULL jest po prostu definiowane jako stała całkowita o wartości zero, nullptr jest literałem wskaźnika, który można przekształcić tylko w typ wskaźnika, a nie w żaden inny typ.

2: Użyteczność

W programowaniu w C++ istnieje wiele sposobów korzystania z wskaźnik zerowy . Inicjowanie wskaźników, wysyłanie parametrów do wywołań funkcji lub zwracanie wartości wskaźników z funkcji, jako przykłady, to tylko niektóre z jego możliwych zastosowań. Może być również używany do określenia, czy wywołanie funkcji lub akcja dała prawidłową wartość wskaźnika.

3: Dynamiczna alokacja pamięci

Dynamiczna alokacja pamięci jest jednym z najpopularniejszych zastosowań a wskaźnik zerowy . Używając nowego operatora w C++, realizowana jest dynamiczna alokacja pamięci. Po wywołaniu nowej metody zwracany jest wskaźnik do świeżo wygenerowanego obiektu. Jeśli alokacja nie powiedzie się z jakiegokolwiek powodu, takiego jak brak wystarczającej ilości pamięci, zwracana jest wartość NULL. W związku z tym ważne jest, aby zweryfikować zwracaną wartość przed użyciem wskaźnika, aby upewnić się, że alokacja się powiodła.

Wniosek

The wskaźnik zerowy jest kluczową ideą w programowaniu w C++, która daje mechanizm pokazujący, że brakuje adresu w pamięci. Deweloperzy mogą zapobiegać awariom oprogramowania i innym problemom, stosując zerowe wskaźniki aby upewnić się, że ich aplikacje nie próbują uzyskać dostępu do błędnych adresów pamięci. Dlatego ważne jest, aby programiści zrozumieli, jak to zrobić zerowe wskaźniki powinny być wykorzystywane i robić to skutecznie w swoich programach.