Mi a nullptr a C++-ban

Mi A Nullptr A C Ban



A C++ nyelvben egy adott mutatóérték, az a null mutató azt jelzi, hogy a mutató nem hivatkozik egyetlen érvényes memóriahelyre sem. A C++11 szabványban vagy újabb verziókban a ' kulcsszó jelöli nullptr ” vagy a 0 állandó értékével.

A null mutató Az ötlet kulcsfontosságú, mert segít megelőzni a hibás memóriaeléréseket, amelyek váratlan futásidejű hibákat és szoftverhibákat okozhatnak. Vegyük fontolóra azt a forgatókönyvet, amikor egy program olyan memóriacímről próbál olvasni vagy írni, amelyet vagy még nem hoztak létre, vagy amelyet már felszabadítottak. Ez a viselkedés C++-ban meghatározhatatlan, és komoly futási problémákat vagy biztonsági hibákat okozhat. A mutató érvénytelen, és nem szabad visszavonni a hivatkozást, ha null értékre hivatkozik. A programleállások, a szegmentálási hibák vagy az illetéktelen memória-hozzáférések csak néhány példa a váratlan viselkedésekre, amelyek előfordulhatnak a hivatkozás megszüntetésekor. null mutató .

Példa nullptr-re C++-ban

#include
segítségével névtér std ;
int fő- ( )
{
nullptr_t pi1, pi2 ;
ha ( pi1 >= pi2 )
{
cout << 'Az 1. mutató nagyobb, mint a 2. mutató értéke' << endl ;
}
más
{
cout << 'A 2. mutató nagyobb, mint az 1. mutató értéke' << endl ;
}
char * ch = pi1 ;
ha ( ch == nullptr )
cout << 'A ch mutató változó nulla értékű 0. címreferenciával' << endl ;
más
cout << 'A ch mutató változó nem null érték, van valamilyen értéke címhivatkozással' << endl ;
Visszatérés 0 ;
}

A fenti kódban kettőt használunk nullptrs és összehasonlítjuk őket egymással. Ezután a karaktermutatót használjuk a nullptr .







Kimenet



Okok a nullptr használatára C++-ban

Null mutatók gyakran használják a C++ programozásban több okból is:



1: Mutatók inicializálása

Amikor egy mutatóváltozót deklarálunk, mindig érvényes memóriahellyel vagy a null mutató . Ha a mutatót később éri el a kódban, ez segít megelőzni a nem deklarált viselkedést.





2: Hibakód

A funkciók visszatérhetnek null mutatók hibakódként jelezve, hogy nem tudták végrehajtani a megadott műveletet vagy lefoglalni a memóriát.

3: A mutató érvényességének ellenőrzése

A mutató érvényességének ellenőrzése a hivatkozás megszüntetése előtt mindig okos ötlet. Ez növeli a kód robusztusságát, és segít megelőzni a váratlan futásidejű hibákat.



4: Polimorfizmus

A C++ nyelvben az alaposztály mutatóit, amelyek nem mutatnak a származtatott osztályok objektumaira, a null mutatók . Ezt általában a polimorf programozásban használják olyan objektumorientált szolgáltatások kezelésére, mint az öröklődés és a virtuális függvények.

Null mutatók nem szabad összetéveszteni a lógó vagy inicializálatlan mutatókkal, ezt nagyon fontos megjegyezni. Az inicializálatlan mutatók a memóriában lévő bármely címre mutathatnak, mivel nincsenek értékkel inicializálva. A lógó mutatók viszont azok, amelyek érvénytelen vagy már lefoglalt memóriarégiókra utalnak. A C++ programozásban a lógó mutatók és az inicializálatlan mutatók egyaránt futásidejű problémákat okozhatnak.

A nullptr használatának előnyei C++-ban

Számos előnye van az a nullptr .

1: Biztonság

Mert nullptr típusbiztonságosabb, mint a NULL, inkább azt kell használni. Míg a NULL egyszerűen definiálható egész állandóként nulla értékkel, nullptr egy pointer literál, amely csak mutatótípussá alakítható, más típusba nem.

2: Használhatóság

A C++ programozásban sokféleképpen használhatjuk a null mutató . A mutatók inicializálása, paraméterek küldése függvényhívásokhoz, vagy mutatóértékek visszaadása függvényekből, például néhány lehetséges felhasználási terület. Használható annak meghatározására is, hogy egy függvényhívás vagy művelet legitim mutatóértéket adott-e.

3: Dinamikus memóriafoglalás

A dinamikus memóriafoglalás az egyik legnépszerűbb felhasználási terület a null mutató . A C++ új operátorával dinamikus memóriafoglalás valósul meg. Az új metódus meghívásakor egy mutatót ad vissza a frissen generált objektumra. Ha a kiosztás bármilyen okból meghiúsul, például nincs elég memória, a NULL visszaküldésre kerül. Következésképpen döntő fontosságú a visszatérési érték ellenőrzése a mutató használata előtt, hogy megbizonyosodjon arról, hogy a kiosztás sikeres volt.

Következtetés

A null mutató a C++ programozás egyik kulcsgondolata, amely egy olyan mechanizmust ad, amely megmutatja, hogy egy cím hiányzik a memóriából. A fejlesztők a szoftver összeomlását és egyéb problémákat megelőzhetik az alkalmazással null mutatók hogy az alkalmazásaik ne próbáljanak meg hibás memóriacímeket elérni. Tehát elengedhetetlen, hogy a programozók megértsék, hogyan null mutatók hatékonyan kell használni programjaikban.