Controlla se il puntatore è NULL in C++

Jinku Hu 12 ottobre 2023
  1. Confronta con nullptr per verificare se il puntatore è NULL in C++
  2. Usa il confronto con 0 per verificare se il puntatore è NULL in C++
  3. Usa il valore del puntatore come condizione per verificare se il puntatore è NULL in C++
Controlla 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!
Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Articolo correlato - C++ Pointer