Controlla se il puntatore è NULL in C++
- 
          
            Confronta con nullptrper verificare se il puntatore èNULLin C++
- 
          
            Usa il confronto con 0per verificare se il puntatore èNULLin C++
- 
          
            Usa il valore del puntatore come condizione per verificare se il puntatore è NULLin 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