Wat is nullptr in C++

Wat Is Nullptr In C



In C++ wordt een specifieke aanwijzerwaarde genaamd a nul punten wordt gebruikt om aan te geven dat een aanwijzer niet verwijst naar een geldige geheugenlocatie. In de C++11-standaard of later wordt dit weergegeven door het trefwoord ' nulptr ” of door de constante waarde van 0.

De nul punten idee is cruciaal omdat het helpt bij het voorkomen van foutieve geheugentoegang, wat kan leiden tot onverwachte runtime-fouten en softwarestoringen. Overweeg het scenario wanneer een programma probeert te lezen van of schrijven naar een geheugenadres dat ofwel niet is gemaakt of waarvan de toewijzing al is opgeheven. Dat gedrag is ondefinieerbaar in C++ en kan leiden tot ernstige runtime-problemen of beveiligingsfouten. Een pointer is ongeldig en mag niet worden verwijderd als deze naar een null-waarde linkt. Beëindigingen van programma's, segmentatiefouten of ongeoorloofde geheugentoegang zijn slechts enkele voorbeelden van onverwacht gedrag dat kan optreden bij het verwijderen van verwijzingen naar een nul punten .

Voorbeeld van nullptr in C++

#include
gebruik makend van naamruimte soa ;
int voornaamst ( )
{
nullptr_t pi1, pi2 ;
als ( pi1 >= pi2 )
{
cout << 'De aanwijzer 1 is groter dan de waarde van aanwijzer 2' << eindel ;
}
anders
{
cout << 'De aanwijzer 2 is groter dan de aanwijzer 1 waarde' << eindel ;
}
char * ch = pi1 ;
als ( ch == nulptr )
cout << 'De ch-pointervariabele heeft een null-waarde met 0e adresreferentie' << eindel ;
anders
cout << 'De ch-pointervariabele is geen null-waarde, maar heeft een bepaalde waarde met adresreferentie' << eindel ;
opbrengst 0 ;
}

In de bovenstaande code gebruiken we er twee nulptrs en deze met elkaar te vergelijken. Vervolgens gebruiken we de karakteraanwijzer om het te valideren nulptr .







Uitgang



Redenen om nullptr te gebruiken in C++

Null-aanwijzers worden om verschillende redenen vaak gebruikt in C++-programmering:



1: Aanwijzers initialiseren

Wanneer een pointervariabele wordt gedeclareerd, moet deze altijd worden geïnitialiseerd met een geldige geheugenlocatie of een nul punten . Wanneer de aanwijzer later in de code wordt gebruikt, helpt dit om niet-gedeclareerd gedrag te voorkomen.





2: Foutcode

Functies kunnen terugkeren null-aanwijzers als foutcodes om aan te geven dat ze de opgegeven actie niet konden voltooien of geen geheugen konden toewijzen.

3: De geldigheid van de aanwijzer verifiëren

Het is altijd een slim idee om de validiteit van de aanwijzer te controleren voordat u de verwijzing ongedaan maakt. Dit verhoogt de robuustheid van de code en helpt bij het voorkomen van onverwachte runtime-fouten.



4: Polymorfisme

In C++ worden verwijzingen naar basisklassen die niet naar objecten van afgeleide klassen verwijzen, weergegeven door null-aanwijzers . Dit wordt meestal gebruikt in polymorfe programmering om objectgeoriënteerde functies zoals overerving en virtuele functies te verwerken.

Null-aanwijzers moet niet worden verward met bungelende of niet-geïnitialiseerde wijzers, het is essentieel om dit te onthouden. Niet-geïnitialiseerde pointers kunnen naar elk adres in het geheugen verwijzen, aangezien ze niet zijn geïnitialiseerd met een waarde. Bungelende aanwijzers zijn daarentegen verwijzingen naar ongeldige of reeds vrijgekomen geheugengebieden. In C++-programmering kunnen bungelende aanwijzers en niet-geïnitialiseerde aanwijzers beide leiden tot runtime-problemen.

Voordelen van het gebruik van nullptr in C++

Er zijn verschillende voordelen van het gebruik van een nulptr .

1: Veiligheid

Omdat nulptr is meer typeveilig dan NULL, het moet in plaats daarvan worden gebruikt. Terwijl NULL eenvoudigweg wordt gedefinieerd als een integerconstante met de waarde nul, nulptr is een letterlijke pointer die alleen kan worden getransformeerd naar een pointertype en niet naar een ander type.

2: Bruikbaarheid

Bij het programmeren in C++ zijn er veel manieren om het nul punten . Enkele van de mogelijke toepassingen zijn het initialiseren van pointers, het verzenden van parameters naar functieaanroepen of het retourneren van pointerwaarden van functies. Het kan ook worden gebruikt om te bepalen of een functieaanroep of actie een legitieme pointerwaarde heeft opgeleverd.

3: Dynamische geheugentoewijzing

De dynamische geheugentoewijzing is een van de meest populaire toepassingen van een nul punten . Met behulp van de nieuwe operator in C++ wordt dynamische geheugentoewijzing uitgevoerd. Bij het aanroepen van de nieuwe methode wordt een verwijzing naar het nieuw gegenereerde object geretourneerd. Als de toewijzing om wat voor reden dan ook mislukt, bijvoorbeeld omdat er onvoldoende geheugen is, wordt NULL teruggestuurd. Daarom is het van cruciaal belang om de geretourneerde waarde te verifiëren voordat u de aanwijzer gebruikt om er zeker van te zijn dat de toewijzing succesvol was.

Conclusie

De nul punten is een sleutelidee in C++-programmering dat een mechanisme geeft om aan te tonen dat een adres in het geheugen ontbreekt. Ontwikkelaars kunnen softwarecrashes en andere problemen voorkomen door gebruik te maken van null-aanwijzers om ervoor te zorgen dat hun applicaties niet proberen toegang te krijgen tot foutieve geheugenadressen. Het is dus essentieel voor programmeurs om te begrijpen hoe null-aanwijzers moeten worden gebruikt en om dit efficiënt te doen in hun programma's.