Ponteiros nulos C ++

É sempre uma boa prática atribuir o ponteiro NULL a uma variável de ponteiro, caso você não tenha o endereço exato a ser atribuído. Isso é feito no momento da declaração da variável. Um ponteiro que é atribuído NULL é chamado denull ponteiro.

O ponteiro NULL é uma constante com valor zero definido em várias bibliotecas padrão, incluindo iostream. Considere o seguinte programa -

#include <iostream>

using namespace std;
int main () {
   int  *ptr = NULL;
   cout << "The value of ptr is " << ptr ;
 
   return 0;
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

The value of ptr is 0

Na maioria dos sistemas operacionais, os programas não têm permissão para acessar a memória no endereço 0 porque essa memória é reservada pelo sistema operacional. No entanto, o endereço de memória 0 tem um significado especial; ele sinaliza que o ponteiro não se destina a apontar para um local de memória acessível. Mas, por convenção, se um ponteiro contém o valor nulo (zero), presume-se que não aponte para nada.

Para verificar se há um ponteiro nulo, você pode usar uma instrução if da seguinte maneira -

if(ptr)     // succeeds if p is not null
if(!ptr)    // succeeds if p is null

Portanto, se todos os ponteiros não usados ​​receberem o valor nulo e você evitar o uso de um ponteiro nulo, poderá evitar o uso incorreto acidental de um ponteiro não inicializado. Muitas vezes, as variáveis ​​não inicializadas contêm alguns valores inúteis e torna-se difícil depurar o programa.