Què és nullptr en C++

Que Es Nullptr En C



En C++, un valor de punter específic anomenat a punter nul s'utilitza per indicar que un punter no fa referència a cap ubicació de memòria vàlida. A l'estàndard C++11 o posterior, es representa amb la paraula clau ' nullptr ” o pel valor constant de 0.

El punter nul La idea és crucial perquè ajuda a prevenir accessos erronis a la memòria, que poden provocar errors d'execució inesperats i errors de programari. Considereu l'escenari quan un programa intenta llegir o escriure en una adreça de memòria que no s'ha creat o que ja s'ha desassignat. Aquest comportament no es pot definir en C++ i pot provocar problemes greus de temps d'execució o defectes de seguretat. Un punter no és vàlid i no s'ha de desreferenciar si enllaça amb un valor nul. Les terminacions de programes, els errors de segmentació o els accessos no autoritzats a la memòria són només alguns exemples de comportament inesperat que pot passar quan es desreferencia punter nul .

Exemple de nullptr en C++

#inclou
utilitzant espai de noms std ;
int principal ( )
{
nullptr_t pi1, pi2 ;
si ( pi1 >= pi2 )
{
cout << 'El punter 1 és més gran que el valor del punter 2' << endl ;
}
altra cosa
{
cout << 'El punter 2 és més gran que el valor del punter 1' << endl ;
}
char * cap = pi1 ;
si ( cap == nullptr )
cout << 'La variable del punter ch té un valor nul amb la referència de l'adreça 0' << endl ;
altra cosa
cout << 'La variable del punter ch no és un valor nul, té algun valor amb referència d'adreça' << endl ;
tornar 0 ;
}

Al codi anterior, n'estem utilitzant dos nullptrs i comparant-los entre ells. Aleshores estem utilitzant el punter de caràcters per validar el nullptr .







Sortida



Raons per utilitzar nullptr en C++

Punters nuls s'utilitzen sovint en programació C++ per diverses raons:



1: Inicialització de punters

Quan es declara una variable punter, sempre s'ha d'inicialitzar amb una ubicació de memòria vàlida o a punter nul . Quan s'accedeix al punter més endavant al codi, això ajuda a prevenir comportaments no declarats.





2: Codi d'error

Les funcions poden tornar punters nuls com a codis d'error per mostrar que no han pogut completar l'acció especificada ni assignar memòria.

3: Verificació de la validesa del punter

Verificar la validesa del punter abans de desreferenciar-lo sempre és una idea intel·ligent. Això augmenta la robustesa del codi i ajuda a prevenir errors inesperats en temps d'execució.



4: Polimorfisme

En C++, els punters de classe base que no apunten a cap objecte de classes derivades es representen per punters nuls . Això s'utilitza normalment en programació polimòrfica per manejar funcions orientades a objectes com l'herència i les funcions virtuals.

Punters nuls No s'ha de confondre amb punters penjants o no inicialitzats, és vital recordar-ho. Els punters no inicialitzats poden apuntar a qualsevol adreça de la memòria ja que no s'han inicialitzat amb un valor. Els punters penjants, en canvi, són aquells que fan referència a regions de memòria no vàlides o ja desassignades. En la programació C++, els punters penjants i els punters no inicialitzats tenen el potencial de provocar problemes d'execució.

Avantatges d'utilitzar nullptr en C++

Hi ha diversos avantatges d'utilitzar a nullptr .

1: Seguretat

Perquè nullptr és més segur de tipus que NULL, s'hauria d'utilitzar. Mentre que NULL es defineix simplement com una constant entera amb el valor zero, nullptr és un punter literal que només es pot transformar a un tipus de punter i no a cap altre tipus.

2: usabilitat

A la programació C++, hi ha moltes maneres d'utilitzar punter nul . Per inicialitzar punters, enviar paràmetres a les trucades de funcions o retornar valors de punters de funcions, com a exemples, són alguns dels seus possibles usos. També es pot utilitzar per determinar si una crida o acció de funció ha donat un valor de punter legítim.

3: Assignació de memòria dinàmica

L'assignació de memòria dinàmica es troba entre els usos més populars de a punter nul . Utilitzant el nou operador en C++, s'aconsegueix l'assignació de memòria dinàmica. En invocar el nou mètode, es retorna un punter a l'objecte recentment generat. Si l'assignació falla per qualsevol motiu, com ara no tenir prou memòria, es retorna NULL. En conseqüència, és crucial verificar el valor de retorn abans d'utilitzar el punter per assegurar-se que l'assignació ha tingut èxit.

Conclusió

El punter nul és una idea clau en la programació C++ que ofereix un mecanisme per mostrar que falta una adreça a la memòria. Els desenvolupadors poden evitar errors de programari i altres problemes mitjançant l'emprament punters nuls per assegurar-se que les seves aplicacions no intenten accedir a adreces de memòria errònies. Per tant, és essencial que els programadors entenguin com punters nuls s'han d'utilitzar i fer-ho de manera eficient en els seus programes.