Co je nullptr v C++

Co Je Nullptr V C



V C++ je specifická hodnota ukazatele nazvaná a nulový ukazatel se používá k označení, že ukazatel neodkazuje na žádné platné paměťové místo. Ve standardu C++11 nebo novějším je reprezentován klíčovým slovem „ nullptr ” nebo konstantní hodnotou 0.

The nulový ukazatel Myšlenka je klíčová, protože pomáhá předcházet chybným přístupům do paměti, které mohou vést k neočekávaným chybám za běhu a selhání softwaru. Zvažte scénář, kdy se program pokouší číst nebo zapisovat na adresu paměti, která buď nebyla vytvořena, nebo která již byla uvolněna. Toto chování je v C++ nedefinovatelné a může mít za následek vážné problémy s běhovým prostředím nebo bezpečnostní chyby. Ukazatel je neplatný a neměl by být zrušen, pokud odkazuje na hodnotu null. Ukončení programu, chyby segmentace nebo neautorizované přístupy do paměti jsou jen několika příklady neočekávaného chování, ke kterému může dojít při dereferencování nulový ukazatel .

Příklad nullptr v C++

#include
použitím jmenný prostor std ;
int hlavní ( )
{
nullptr_t pi1, pi2 ;
-li ( pi1 >= pi2 )
{
cout << 'Ukazatel 1 je větší než hodnota ukazatele 2' << endl ;
}
jiný
{
cout << 'Ukazatel 2 je větší než hodnota ukazatele 1' << endl ;
}
char * ch = pi1 ;
-li ( ch == nullptr )
cout << 'Proměnná ukazatele ch má hodnotu null s odkazem na 0. adresu' << endl ;
jiný
cout << 'Proměnná ukazatele ch není nulová hodnota, má nějakou hodnotu s odkazem na adresu' << endl ;
vrátit se 0 ;
}

Ve výše uvedeném kódu používáme dva nullptrs a porovnávat je mezi sebou. Potom použijeme ukazatel na znak k ověření nullptr .







Výstup



Důvody pro použití nullptr v C++

Nulové ukazatele se často používají v programování v C++ z několika důvodů:



1: Inicializace ukazatelů

Když je deklarována proměnná ukazatele, měla by být vždy inicializována s platným umístěním paměti nebo a nulový ukazatel . Když se k ukazateli přistupuje později v kódu, pomáhá to zabránit nedeklarovanému chování.





2: Kód chyby

Funkce se mohou vrátit nulové ukazatele jako chybové kódy, které ukazují, že nebyli schopni dokončit zadanou akci nebo alokovat paměť.

3: Ověření platnosti ukazatele

Ověření platnosti ukazatele před dereferencováním je vždy chytrý nápad. To zvyšuje robustnost kódu a pomáhá předcházet neočekávaným selháním běhového prostředí.



4: Polymorfismus

V C++ jsou ukazatele základní třídy, které neukazují na žádné objekty odvozených tříd, reprezentovány nulové ukazatele . To se obvykle používá v polymorfním programování ke zpracování objektově orientovaných funkcí, jako jsou dědičnost a virtuální funkce.

Nulové ukazatele by neměly být zaměňovány s visícími nebo neinicializovanými ukazateli, je důležité si to zapamatovat. Neinicializované ukazatele mohou ukazovat na jakoukoli adresu v paměti, protože nebyly inicializovány hodnotou. Na druhou stranu visící ukazatele jsou ty, které odkazují na neplatné nebo již uvolněné oblasti paměti. V programování v C++ mohou visící ukazatele a neinicializované ukazatele vést k problémům za běhu.

Výhody použití nullptr v C++

Existuje několik výhod použití a nullptr .

1: Bezpečnost

Protože nullptr je typově bezpečnější než NULL, měl by být místo toho použit. Zatímco NULL je jednoduše definována jako celočíselná konstanta s hodnotou nula, nullptr je ukazatelový literál, který lze transformovat pouze na typ ukazatele a nikoli na jiný typ.

2: Použitelnost

V programování v C++ existuje mnoho způsobů, jak použít nulový ukazatel . Některé z možných použití jsou například pro inicializaci ukazatelů, odesílání parametrů do volání funkcí nebo vracení hodnot ukazatelů z funkcí. Může být také použit k určení, zda volání funkce nebo akce poskytly legitimní hodnotu ukazatele.

3: Dynamická alokace paměti

Dynamická alokace paměti patří mezi nejoblíbenější použití a nulový ukazatel . Pomocí operátoru new v C++ je dosaženo dynamické alokace paměti. Při vyvolání nové metody se vrátí ukazatel na čerstvě vygenerovaný objekt. Pokud se alokace z jakéhokoli důvodu nezdaří, například kvůli nedostatku paměti, je zpět odeslána hodnota NULL. V důsledku toho je důležité ověřit návratovou hodnotu před použitím ukazatele, abyste se ujistili, že alokace byla úspěšná.

Závěr

The nulový ukazatel je klíčová myšlenka v programování C++, která poskytuje mechanismus, který ukazuje, že adresa v paměti chybí. Vývojáři mohou zabránit pádům softwaru a dalším problémům tím, že zaměstnávají nulové ukazatele aby se ujistil, že se jejich aplikace nepokusí získat přístup k chybným adresám paměti. Je tedy nezbytné, aby programátoři pochopili, jak na to nulové ukazatele by měly být využívány a aby tak činily efektivně ve svých programech.