Menu
Coddy logo textTech

Ponteiros NULL

Parte da seção Logic & Flow do Journey de C da Coddy — lição 5 de 63.

Às vezes, você precisa declarar um ponteiro, mas não tem um endereço de memória válido para atribuir a ele imediatamente. Nessas situações, é importante inicializar o ponteiro com um valor especial chamado NULL.

Um ponteiro NULL é um ponteiro que não aponta para nenhum endereço de memória válido. Em C, NULL é tipicamente definido como 0 ou (void*)0. Quando você inicializa um ponteiro como NULL, você está declarando explicitamente que ele não aponta para nada útil no momento.

int *ptr = NULL;    // Inicializa o ponteiro como NULL
printf("%p", ptr);  // Isso imprimirá 0 ou (nil)

Inicializar ponteiros como NULL é considerado uma boa prática de programação porque evita que seu ponteiro contenha valores de lixo aleatórios. Um ponteiro não inicializado pode conter qualquer endereço de memória aleatório, o que pode levar a um comportamento imprevisível se você acidentalmente tentar usá-lo.

Você pode verificar se um ponteiro é NULL antes de usá-lo, o que ajuda a evitar falhas e torna seu código mais robusto. Essa verificação de segurança torna-se especialmente importante à medida que seus programas se tornam mais complexos.

challenge icon

Desafio

Fácil

Escreva um programa em C que demonstre a inicialização e a verificação adequadas de ponteiros NULL. Seu programa deve:

  1. Declarar um ponteiro para um inteiro chamado safe_ptr e inicializá-lo como NULL
  2. Declarar um ponteiro para um caractere chamado char_ptr e inicializá-lo como NULL
  3. Verificar se safe_ptr é NULL usando uma instrução if e imprimir "safe_ptr is NULL" se for
  4. Verificar se char_ptr é NULL usando uma instrução if e imprimir "char_ptr is NULL" se for
  5. Imprimir o endereço de memória armazenado em safe_ptr usando printf com o especificador de formato %p
  6. Imprimir o endereço de memória armazenado em char_ptr usando printf com o especificador de formato %p

Sua saída deve exibir os resultados no seguinte formato:

safe_ptr is NULL
char_ptr is NULL
safe_ptr address: [address]
char_ptr address: [address]

Os endereços de memória reais aparecerão como 0, (nil) ou representação NULL semelhante, dependendo do seu sistema, mas o formato e os rótulos devem corresponder exatamente ao mostrado acima.

Folha de consulta

Um ponteiro NULL é um ponteiro que não aponta para nenhum endereço de memória válido. Em C, NULL é tipicamente definido como 0 ou (void*)0.

Inicialize ponteiros como NULL para evitar valores de lixo aleatórios:

int *ptr = NULL;    // Inicializa o ponteiro como NULL
printf("%p", ptr);  // Isso imprimirá 0 ou (nil)

Verifique se um ponteiro é NULL antes de usá-lo para evitar falhas (crashes):

if (ptr == NULL) {
    // Seguro para lidar com o caso NULL
}

Experimente você mesmo

#include <stdio.h>

int main() {
    // TODO: Escreva seu código aqui
    // Declare e inicialize seus ponteiros
    // Verifique se os ponteiros são NULL
    // Imprima a saída necessária
    
    return 0;
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Logic & Flow