Mis on nullptr keeles C++

Mis On Nullptr Keeles C



C++ puhul konkreetne osuti väärtus, mida nimetatakse a null osuti kasutatakse näitamaks, et kursor ei viita ühelegi kehtivale mälukohale. C++11 standardis või uuemas versioonis tähistab seda märksõna ' nullptr ” või konstantse väärtusega 0.

The null osuti Idee on ülioluline, sest see aitab vältida vigaseid mälupöördusi, mis võivad põhjustada ootamatuid käitusvigu ja tarkvaratõrkeid. Mõelge stsenaariumile, kui programm proovib lugeda või kirjutada mäluaadressilt, mida pole loodud või mis on juba eraldatud. See käitumine on C++-s määratlematu ja võib põhjustada tõsiseid käitusprobleeme või turvavigu. Osuti on kehtetu ja sellele ei tohiks viidata, kui see viitab nullväärtusele. Programmi katkestused, segmenteerimisvead või volitamata juurdepääsud mälule on vaid mõned näited ootamatust käitumisest, mis võib juhtuda viitamise tühistamisel. null osuti .

Nullptr näide C++ keeles

#include
kasutades nimeruum std ;
int peamine ( )
{
nullptr_t pi1, pi2 ;
kui ( pi1 >= pi2 )
{
cout << 'Osuti 1 on suurem kui osuti 2 väärtus' << endl ;
}
muidu
{
cout << 'Osuti 2 on suurem kui osuti 1 väärtus' << endl ;
}
char * ptk = pi1 ;
kui ( ptk == nullptr )
cout << 'Ch osuti muutujal on nullväärtus 0-nda aadressi viitega' << endl ;
muidu
cout << 'Ch osuti muutuja ei ole nullväärtus, sellel on aadressiviitega väärtus' << endl ;
tagasi 0 ;
}

Ülaltoodud koodis kasutame kahte nullptrs ja neid omavahel võrrelda. Seejärel kasutame märki kinnitamiseks nullptr .







Väljund



Põhjused nullptr kasutamiseks C++-s

Null osuti kasutatakse C++ programmeerimises sageli mitmel põhjusel:



1: Osutite lähtestamine

Kui osuti muutuja on deklareeritud, tuleb see alati lähtestada kehtiva mälukoha või a-ga null osuti . Kui kursorile pääsete juurde koodis hiljem, aitab see vältida deklareerimata käitumist.





2: Veakood

Funktsioonid võivad naasta null viiteid veakoodidena, mis näitavad, et nad ei suutnud määratud toimingut lõpule viia ega mälu eraldada.

3: kursori kehtivuse kontrollimine

Kursori kehtivuse kontrollimine enne viitamise tühistamist on alati tark mõte. See suurendab koodi töökindlust ja aitab ära hoida ootamatuid käitusaegseid tõrkeid.



4: polümorfism

C++-s tähistatakse põhiklassi viiteid, mis ei osuta tuletatud klasside objektidele null viiteid . Seda kasutatakse tavaliselt polümorfses programmeerimises, et käsitleda objektorienteeritud funktsioone, nagu pärimine ja virtuaalsed funktsioonid.

Null osuti ei tohiks segi ajada rippuvate või initsialiseerimata osutitega, see on oluline meeles pidada. Initsialiseerimata osutid võivad osutada suvalisele mälus olevale aadressile, kuna neid ei ole lähtestatud väärtusega. Rippuvad osutid on seevastu need, mis viitavad kehtetutele või juba eraldatud mälupiirkondadele. C++ programmeerimisel võivad rippuvad ja initsialiseerimata osutid põhjustada käitusaegseid probleeme.

Nullptr kasutamise eelised C++-s

A kasutamisel on mitmeid eeliseid nullptr .

1: Ohutus

Sest nullptr on tüübikindel kui NULL, tuleks seda kasutada selle asemel. Kui NULL on lihtsalt defineeritud täisarvuna, mille väärtus on null, nullptr on osutiliteraal, mida saab teisendada ainult osutitüübiks, mitte mis tahes muuks tüübiks.

2: kasutatavus

C++ programmeerimisel on selle kasutamiseks palju võimalusi null osuti . Osutite lähtestamiseks saatke parameetrid funktsioonikutsetele või tagastage osuti väärtused funktsioonidest, näiteks, on mõned selle võimalikud kasutusvõimalused. Seda saab kasutada ka selleks, et määrata, kas funktsiooni kutse või toiming andis õiguspärase osuti väärtuse.

3: dünaamiline mälu eraldamine

Dünaamiline mälujaotus on üks populaarsemaid a null osuti . Kasutades C++ uut operaatorit, saavutatakse dünaamiline mälujaotus. Uue meetodi käivitamisel tagastatakse kursor värskelt loodud objektile. Kui eraldamine mingil põhjusel ebaõnnestub, näiteks kui mälu pole piisavalt, saadetakse NULL tagasi. Järelikult on oluline enne kursori kasutamist kontrollida tagastusväärtust, et olla kindel, et jaotamine oli edukas.

Järeldus

The null osuti on C++ programmeerimise põhiidee, mis annab mehhanismi näitamaks, et mälus puudub aadress. Arendajad saavad tarkvara krahhi ja muid probleeme ära hoida, kasutades seda null viiteid veendumaks, et nende rakendused ei püüaks vigadele mäluaadressidele juurde pääseda. Seega on programmeerijate jaoks oluline mõista, kuidas null viiteid tuleks oma programmides kasutada ja teha seda tõhusalt.