Co to jest nullptr w C ++

Co to jest nullptr w C ++
W C ++ określona wartość wskaźnika zwana a wskaźnik zerowy służy do wskazania, że ​​wskaźnik nie odnosi się do żadnej prawidłowej lokalizacji pamięci. W standardzie C ++ 11 lub później jest to reprezentowane przez słowo kluczowe ”NULLPTR”Lub przez stałą wartość 0.

wskaźnik zerowy Pomysł jest kluczowy, ponieważ pomaga w zapobieganiu błędnym dostępowi do pamięci, co może spowodować nieoczekiwane błędy działania i awarie oprogramowania. Rozważ scenariusz, gdy program próbuje odczytać lub napisać na adres pamięci, który albo nie został utworzony, albo który już został przekazany. To zachowanie jest nieokreślone w C ++ i może skutkować poważnymi problemami wykonawczymi lub wadami bezpieczeństwa. Wskaźnik jest nieprawidłowy i nie powinien być dereferencji, jeśli łączy się z wartością zerową. Zakończenia programowe, usterki segmentacji lub nieautoryzowane dostęp do pamięci to tylko kilka przykładów nieoczekiwanych zachowań, które mogą się zdarzyć podczas dereferencji wskaźnik zerowy.

Przykład NULLPTR w C++

#włączać
za pomocą przestrzeni nazw Std;
int main ()

nullptr_t pi1, pi2;
if (PI1> = PI2)

Cout << "The pointer 1 is greater than the pointer 2 value" << endl;

w przeciwnym razie

Cout << "The pointer 2 is greater than the pointer 1 value" << endl;

char *ch = pi1;
if (ch == nullptr)
Cout << "The ch pointer variable has null value with 0th address reference" << endl;
w przeciwnym razie
Cout << "The ch pointer variable is not null value it has some value with address reference" << endl;
powrót 0;

W powyższym kodzie używamy dwóch NULLPTRS i porównywanie ich ze sobą. Następnie używamy wskaźnika znaku do potwierdzenia NULLPTR.

Wyjście

Powody używania NULLPTR w C++

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

1: inicjalizacja wskazówek

Gdy zmienna wskaźnika jest zadeklarowana, należy ją zawsze zainicjować za pomocą prawidłowej lokalizacji pamięci lub wskaźnik zerowy. Gdy wskaźnik jest dostępny w dalszej części kodu, pomaga to zapobiec niezgłoszonym zachowaniu.

2: Kod błędu

Funkcje mogą zwrócić Wskaźniki zerowe jako kody błędów, aby pokazać, że nie były w stanie ukończyć określonej akcji ani przydzielić pamięci.

3: Weryfikacja ważności wskaźnika

Weryfikacja ważności wskaźnika przed dereferencją jest zawsze mądrym pomysłem. Zwiększa to niezawodność kodu i pomaga w zapobieganiu nieoczekiwanym awarii środowiska wykonawczego.

4: Polimorfizm

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

Wskaźniki zerowe Nie należy mylić z wiszącymi lub niezainicjowanymi wskazówkami, ważne jest, aby to pamiętać. Niezinitostanne wskaźniki mogą wskazywać na każdy adres w pamięci, ponieważ nie zostały one zainicjowane o wartości. Z drugiej strony zwisające wskaźniki to te, które odnoszą się do nieprawidłowych lub już zdealokowanych regionów pamięci. W programowaniu C ++, zwisające wskaźniki i niezainicjowane wskaźniki mogą potencjalnie skutkować problemami wykonawczymi.

Zalety korzystania z NULLPTR w C++

Istnieje kilka korzyści z używania NULLPTR.

1: Bezpieczeństwo

Ponieważ NULLPTR jest bardziej bezpieczny typu niż null, należy go użyć. Podczas gdy NULL jest po prostu zdefiniowany jako stała liczbą całkowitą z 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 C ++ istnieje wiele sposobów korzystania z wskaźnik zerowy. Aby zainicjować wskaźniki, wysyłaj parametry do wywołania funkcji lub zwróć wartości wskaźnika z funkcji, jako przykłady, są niektóre z jego możliwych zastosowań. Można go również użyć do ustalenia, czy wywołanie funkcji lub działanie dało uzasadnioną wartość wskaźnika.

3: Dynamiczny alokacja pamięci

Dynamiczna alokacja pamięci jest jednym z najpopularniejszych zastosowań wskaźnik zerowy. Korzystając z nowego operatora w C ++, dokonuje się dynamicznej alokacji 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, na przykład brak wystarczającej pamięci, Null zostaje odesłany. W związku z tym kluczowe jest zweryfikowanie wartości zwracania przed wykorzystaniem wskaźnika, aby upewnić się, że alokacja się powiodła.

Wniosek

wskaźnik zerowy jest kluczowym pomysłem w programowaniu C ++, który daje mechanizm pokazujący, że brakuje adresu pamięci. Deweloperzy mogą zapobiegać awarii oprogramowania i innych problemach, zatrudniając Wskaźniki zerowe Aby upewnić się, że ich aplikacje nie próbują uzyskać dostępu do błędnych adresów pamięci. Tak więc programistowie niezbędne jest zrozumienie, jak Wskaźniki zerowe powinien być używany i robić to skutecznie w swoich programach.