Menu
Coddy logo textTech

Declarando Ponteiros

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

Agora que você entende o que são ponteiros, vamos aprender como criá-los. Declarar uma variável ponteiro segue uma sintaxe específica que diz ao compilador para qual tipo de dado o ponteiro irá apontar.

A sintaxe básica para declarar um pointer é: data_type *pointer_name;

int *ptr;        // Declara um ponteiro para um inteiro
char *ch_ptr;    // Declara um ponteiro para um caractere
float *f_ptr;    // Declara um ponteiro para um float

O asterisco (*) é o que torna esta uma declaração de ponteiro. Ele diz ao compilador que esta variável irá armazenar um endereço de memória, não o valor de dados real. Quando você declara int *ptr;, você está dizendo "ptr é um ponteiro que pode armazenar o endereço de uma variável inteira."

É uma boa prática inicializar ponteiros como NULL se eles ainda não estiverem apontando para um endereço de memória válido. Isso evita que eles apontem para locais de memória aleatórios: int *ptr = NULL;

Ao imprimir endereços de pointer usando printf, use o especificador de format %p. É frequentemente recomendado converter (cast) o pointer para (void *) para garantir compatibilidade e a formatação correta: printf("%p", (void *)ptr);

Observe que o tipo de dado antes do asterisco especifica que tipo de dado o ponteiro irá apontar. Isso é importante porque diferentes tipos de dados ocupam diferentes quantidades de espaço na memória, e o compilador precisa saber dessa informação para o gerenciamento correto da memória.

challenge icon

Desafio

Fácil
Escreva um programa em C que demonstre a sintaxe correta de declaração de ponteiros. Seu programa deve:
  1. Declarar um ponteiro para um int chamado int_ptr, inicializado com NULL
  2. Declarar um ponteiro para um char chamado char_ptr, inicializado com NULL
  3. Declarar um ponteiro para um float chamado float_ptr, inicializado com NULL
  4. Imprimir os endereços de memória armazenados em cada ponteiro usando printf com o especificador de formato %p. Ao imprimir, faça o cast do ponteiro para (void*) para garantir a formatação correta, por exemplo: printf("Label: %p\n", (void*)ptr);

Sua saída deve exibir os três endereços de ponteiro no seguinte formato:

Integer pointer: [address]
Character pointer: [address]  
Float pointer: [address]

Observe que os endereços de memória reais vão variar, mas o formato e os rótulos devem corresponder exatamente ao mostrado acima.

Experimente você mesmo

#include <stdio.h>

int main() {
    // TODO: Declare seus ponteiros aqui
    
    
    // TODO: Imprima os endereços dos ponteiros usando o formato necessário
    
    
    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