Menu
Coddy logo textTech

O Operador de Endereço (&)

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

Agora que você sabe declarar ponteiros, você precisa aprender como realmente armazenar um endereço de memória neles. O operador de endereço (&) é a chave para obter o endereço de memória de qualquer variável.

Quando você coloca o operador & na frente de um nome de variável, ele retorna o endereço de memória onde essa variável está armazenada. Pense nisso como perguntar "Onde esta variável vive na memória?"

int age = 25;
int *ptr;
ptr = &age;    // Armazena o endereço de 'age' em 'ptr'

Neste exemplo, &age nos dá o endereço de memória da variável age. Em seguida, atribuímos este endereço ao nosso ponteiro ptr. Agora, ptr "aponta para" a variável age.

O operador de endereço (address-of) é essencial porque é a ponte entre variáveis comuns e ponteiros. Sem ele, você não poderia dizer a um ponteiro para qual variável apontar. Lembre-se de que os tipos de dados devem coincidir - você só pode atribuir o endereço de um inteiro a um ponteiro declarado para inteiros.

challenge icon

Desafio

Fácil

Escreva um programa em C que demonstre o uso do operador de endereço (address-of) para conectar variáveis com ponteiros. Seu programa deve:

  1. Declarar uma variável inteira chamada number e inicializá-la com o valor 42
  2. Declarar uma variável de caractere chamada letter e inicializá-la com o valor 'X'
  3. Declarar um ponteiro para um inteiro chamado num_ptr
  4. Declarar um ponteiro para um caractere chamado char_ptr
  5. Usar o operador de endereço para atribuir o endereço de number ao num_ptr
  6. Usar o operador de endereço para atribuir o endereço de letter ao char_ptr
  7. Imprimir os endereços armazenados em ambos os ponteiros usando printf com o especificador de formato %p

Sua saída deve exibir os endereços dos ponteiros no seguinte formato:

Address of number: [address]
Address of letter: [address]

Os endereços de memória reais variarão entre as execuções do programa, mas o formato e os rótulos devem corresponder exatamente como mostrado acima.

Folha de consulta

O operador de endereço (&) retorna o endereço de memória de uma variável:

int age = 25;
int *ptr;
ptr = &age;    // Armazena o endereço de 'age' em 'ptr'

O operador de endereço é essencial para conectar variáveis com ponteiros. Os tipos de dados devem corresponder - você só pode atribuir o endereço de um inteiro a um ponteiro declarado para inteiros.

Use o especificador de formato %p para imprimir endereços de ponteiro com printf.

Experimente você mesmo

#include <stdio.h>

int main() {
    // TODO: Escreva seu código aqui
    // 1. Declare e inicialize as variáveis
    // 2. Declare os ponteiros
    // 3. Use o operador de endereço para atribuir endereços
    // 4. Imprima os endereços usando o formato mostrado
    
    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