Controlla se il puntatore è NULL in C++
-
Confronta con
nullptr
per verificare se il puntatore èNULL
in C++ -
Usa il confronto con
0
per verificare se il puntatore èNULL
in C++ -
Usa il valore del puntatore come condizione per verificare se il puntatore è
NULL
in C++
In questo articolo verranno illustrati più metodi per verificare se un puntatore è nullo in C++.
Confronta con nullptr
per verificare se il puntatore è NULL
in C++
Il linguaggio C++ fornisce molteplici funzionalità di basso livello per manipolare direttamente la memoria e specifica il concetto di puntatore
, che è l’oggetto che punta a un indirizzo di memoria. Di solito, un puntatore dovrebbe puntare a un oggetto utilizzato dal programma in esecuzione. Tuttavia, possiamo anche dichiarare un puntatore come puntatore nullo che non punta a nessun oggetto.
Un puntatore nullo viene inizializzato assegnando il valore letterale nullptr
o con l’intero 0
. Si noti, tuttavia, che il C++ moderno suggerisce di evitare l’inizializzazione 0
dei puntatori perché può portare a risultati indesiderati quando si utilizzano funzioni sovraccaricate. Nell’esempio seguente, controlliamo se il puntatore non è uguale a nullptr
, e se la condizione è soddisfatta, possiamo operare su di essa.
#include <iostream>
using std::cout;
using std::endl;
#define SIZE 123
int main() {
char *arr = (char *)malloc(SIZE);
if (arr != nullptr) {
cout << "Valid pointer!" << endl;
} else {
cout << "NULL pointer!" << endl;
}
free(arr);
return EXIT_SUCCESS;
}
Produzione:
Valid pointer!
Usa il confronto con 0
per verificare se il puntatore è NULL
in C++
C’è anche una variabile del preprocessore chiamata NULL
, che ha radici nella libreria standard C ed è spesso usata nel codice legacy. Tieni presente che non è consigliabile utilizzare NULL
nella programmazione C++ contemporanea perché equivale all’inizializzazione con l’intero 0
e potrebbero sorgere problemi come indicato nella sezione precedente. Tuttavia, possiamo verificare se un puntatore è nullo confrontandolo con 0
come dimostrato nel prossimo esempio di codice:
#include <iostream>
using std::cout;
using std::endl;
#define SIZE 123
int main() {
char *arr = (char *)malloc(SIZE);
if (arr != 0) {
cout << "Valid pointer!" << endl;
} else {
cout << "NULL pointer!" << endl;
}
free(arr);
return EXIT_SUCCESS;
}
Produzione:
Valid pointer!
Usa il valore del puntatore come condizione per verificare se il puntatore è NULL
in C++
I puntatori nulli vengono valutati come false
quando vengono utilizzati in espressioni logiche. Quindi, possiamo mettere un dato puntatore nella condizione dell’istruzione if
per verificare se è nullo. Notare che la dereferenziazione dei puntatori nulli porta a un comportamento indefinito, che nella maggior parte dei casi causa la chiusura anomala di un programma.
#include <iostream>
using std::cout;
using std::endl;
#define SIZE 123
int main() {
char *arr = (char *)malloc(SIZE);
if (arr) {
cout << "Valid pointer!" << endl;
} else {
cout << "NULL pointer!" << endl;
}
free(arr);
return EXIT_SUCCESS;
}
Produzione:
Valid pointer!
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook