Mikä on nullptr C++:ssa

Mika On Nullptr C Ssa



C++:ssa tietty osoittimen arvo, jota kutsutaan nimellä a nolla osoitin käytetään osoittamaan, että osoitin ei viittaa mihinkään kelvolliseen muistipaikkaan. C++11-standardissa tai uudemmassa sitä edustaa avainsana ' nullptr ' tai vakioarvolla 0.

The nolla osoitin Idea on ratkaiseva, koska se auttaa estämään virheellisiä muistin käyttöjä, jotka voivat johtaa odottamattomiin ajonaikaisiin virheisiin ja ohjelmistovirheisiin. Harkitse tilannetta, jossa ohjelma yrittää lukea tai kirjoittaa muistiosoitteesta, jota ei ole luotu tai joka on jo vapautettu. Tätä käyttäytymistä ei voi määritellä C++:ssa ja se voi johtaa vakaviin ajonaikaisiin ongelmiin tai tietoturvapuutteisiin. Osoitin on virheellinen, eikä siihen saa viitata, jos se linkittää tyhjään arvoon. Ohjelman lopettaminen, segmentointivirheet tai luvaton muistin käyttö ovat vain muutamia esimerkkejä odottamattomasta toiminnasta, jota saattaa tapahtua, kun nolla osoitin .

Esimerkki nullptr:stä C++:ssa

#include
käyttämällä nimiavaruus std ;
int pää ( )
{
nullptr_t pi1, pi2 ;
jos ( pi1 >= pi2 )
{
cout << 'Osoittimen 1 arvo on suurempi kuin osoittimen 2 arvo' << endl ;
}
muu
{
cout << 'Osoittimen 2 arvo on suurempi kuin osoittimen 1 arvo' << endl ;
}
hiiltyä * ch = pi1 ;
jos ( ch == nullptr )
cout << 'Ch-osoittimen muuttujalla on nolla-arvo 0. osoiteviittauksella' << endl ;
muu
cout << 'ch-osoittimen muuttuja ei ole nolla-arvo, sillä on jokin arvo osoiteviittauksella' << endl ;
palata 0 ;
}

Yllä olevassa koodissa käytämme kahta nullptrs ja vertaamalla niitä keskenään. Sitten käytämme merkkiosoitinta vahvistamaan nullptr .







Lähtö



Syitä käyttää nullptr:ää C++:ssa

Nolla-osoittimet käytetään usein C++-ohjelmoinnissa useista syistä:



1: Alustetaan osoittimia

Kun osoitinmuuttuja ilmoitetaan, se tulee aina alustaa kelvollisella muistipaikalla tai a nolla osoitin . Kun osoitinta käytetään myöhemmin koodissa, tämä auttaa estämään ilmoittamattoman toiminnan.





2: Virhekoodi

Toiminnot voivat palata nollaosoittimet virhekoodeina osoittamaan, että he eivät pystyneet suorittamaan määritettyä toimintoa tai varaamaan muistia.

3: Osoittimen voimassaolon tarkistaminen

Osoittimen oikeellisuuden tarkistaminen ennen viittauksen poistamista on aina fiksu idea. Tämä lisää koodin kestävyyttä ja auttaa estämään odottamattomia ajonaikaisia ​​vikoja.



4: Polymorfismi

C++:ssa perusluokan osoittimia, jotka eivät osoita mihinkään johdettujen luokkien objekteihin, edustaa nollaosoittimet . Tätä käytetään tyypillisesti polymorfisessa ohjelmoinnissa oliopohjaisten ominaisuuksien, kuten perinnön ja virtuaalifunktioiden, käsittelemiseen.

Nolla-osoittimet ei pidä sekoittaa roikkuviin tai alustamattomiin osoittimiin, tämä on tärkeää muistaa. Alustamattomat osoittimet voivat osoittaa mihin tahansa muistissa olevaan osoitteeseen, koska niitä ei ole alustettu arvolla. Sen sijaan roikkuvat osoittimet viittaavat virheellisiin tai jo vapautettuihin muistialueisiin. C++-ohjelmoinnissa roikkuvat osoittimet ja alustamattomat osoittimet voivat molemmat johtaa ajonaikaisiin ongelmiin.

Nullptr:n käytön edut C++:ssa

A:n käyttämisessä on useita etuja nullptr .

1: Turvallisuus

Koska nullptr on tyyppiturvallisempi kuin NULL, sitä tulisi käyttää sen sijaan. Vaikka NULL määritellään yksinkertaisesti kokonaislukuvakioksi, jonka arvo on nolla, nullptr on osoitinliteraali, joka voidaan muuntaa vain osoitintyypiksi, ei mihinkään muuhun tyyppiin.

2: Käytettävyys

C++-ohjelmoinnissa on monia tapoja käyttää nolla osoitin . Osoittimien alustus, parametrien lähettäminen funktiokutsuihin tai osoitinarvojen palauttaminen funktioista, esimerkiksi, ovat joitakin sen mahdollisia käyttötarkoituksia. Sitä voidaan myös käyttää määrittämään, onko funktiokutsu tai toiminto tuottanut laillisen osoitinarvon.

3: Dynaaminen muistin varaus

Dynaaminen muistin allokointi on yksi suosituimmista käyttötavoista a nolla osoitin . Käyttämällä uutta operaattoria C++:ssa, dynaaminen muistin varaus saadaan aikaan. Uutta menetelmää käytettäessä palautetaan osoitin juuri luotuun objektiin. Jos varaus epäonnistuu jostain syystä, kuten muistin puutteesta, NULL lähetetään takaisin. Tästä syystä on ratkaisevan tärkeää tarkistaa palautusarvo ennen osoittimen käyttöä varmistaaksesi, että kohdistaminen onnistui.

Johtopäätös

The nolla osoitin on C++-ohjelmoinnin keskeinen idea, joka antaa mekanismin osoittaa, että muistissa oleva osoite puuttuu. Kehittäjät voivat estää ohjelmiston kaatumiset ja muut ongelmat käyttämällä nollaosoittimet varmistaakseen, että heidän sovelluksensa eivät yritä käyttää virheellisiä muistiosoitteita. Joten ohjelmoijien on tärkeää ymmärtää miten nollaosoittimet tulisi käyttää ja tehdä se tehokkaasti ohjelmissaan.