Ponteiros Nulos

Um valor de ponteiro pode ser nulo, o que significa que ele não aponta para nenhum objeto. A forma mais limpa de obter um ponteiro nulo é escrevendo NULL, uma macro padrão definida em <stddef.h>. Também é possível fazer isso convertendo o valor 0 para o tipo de ponteiro desejado, como em:

(char *) 0

(O operador de cast realiza a conversão explícita de tipo; veja .)

Você pode armazenar um ponteiro nulo em qualquer lvalue cujo tipo de dado seja um tipo de ponteiro:

char *foo;
foo = NULL;

Essas duas linhas, se forem consecutivas, podem ser combinadas em uma declaração com inicializador:

char *foo = NULL;

Também é possível fazer o cast explícito de NULL para o tipo de ponteiro específico desejado — isso não faz diferença:

char *foo;
foo = (char *) NULL;

Para testar se um ponteiro é nulo, compare-o com zero ou com NULL, como no exemplo abaixo:

if (p != NULL)
  /* p não é nulo. */
  operate(p);

Como testar se um ponteiro não é nulo é algo básico e frequente, todos, exceto iniciantes em C, entenderão a forma abreviada sem != NULL:

if (p)
  /* p não é nulo. */
  operate(p);

Atualizado

Isto foi útil?