Menu
Coddy logo textTech

Passando Ponteiros para Funções

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

Agora que você entende as limitações da passagem por valor, vamos explorar como passar ponteiros para funções resolve esse problema. Em vez de passar uma cópia do valor de uma variável, você pode passar o endereço de memória da variável para a função.

Quando você passa um ponteiro para uma função, a função recebe acesso à localização da variável original na memória. Isso significa que a função pode trabalhar diretamente com os dados originais, não apenas com uma cópia deles.

void processValue(int *ptr) {
    // ptr contém o endereço da variável original
    // A função agora pode acessar esse local de memória
}

int main() {
    int x = 10;
    processValue(&x);  // Passa o endereço de x
    return 0;
}

Observe como usamos o operador de endereço & ao chamar a função para passar o endereço da variável. O parâmetro da função é declarado como int *ptr, indicando que ele espera receber um ponteiro para um inteiro. Esta técnica fundamental abre possibilidades poderosas para que as funções interajam com os dados do seu programa.

challenge icon

Desafio

Fácil

Escreva um programa em C que demonstre a passagem de ponteiros para funções. Seu programa deve:

  1. Criar uma função chamada displayValue que recebe um ponteiro para um inteiro como seu parâmetro
  2. Dentro da função displayValue, usar o operador de desreferência para acessar o valor no endereço de memória e imprimi-lo no formato: Value at address: [value]
  3. Na função main, declarar uma variável inteira chamada number e inicializá-la com o valor 42
  4. Imprimir o valor original no formato: Original value: [value]
  5. Chamar a função displayValue e passar o endereço da variável number usando o operador address-of (&)
  6. Após a chamada da função, imprimir uma mensagem de confirmação: Function call completed

Sua saída deve demonstrar que a função recebe e acessa com sucesso o endereço de memória da variável original:

Original value: 42
Value at address: 42
Function call completed

Este desafio introduz o conceito fundamental de passar ponteiros para funções, permitindo que a função acesse o local de memória da variável original em vez de trabalhar com uma cópia de seu valor.

Folha de consulta

Ao passar ponteiros para funções, a função recebe acesso ao local de memória da variável original em vez de uma cópia do seu valor.

Use o operador de endereço & para passar o endereço de uma variável para uma função:

void processValue(int *ptr) {
    // ptr contém o endereço da variável original
    // A função agora pode acessar esse local de memória
}

int main() {
    int x = 10;
    processValue(&x);  // Passa o endereço de x
    return 0;
}

O parâmetro da função é declarado como int *ptr para indicar que ele espera receber um ponteiro para um inteiro.

Experimente você mesmo

#include <stdio.h>

// TODO: Escreva sua função displayValue aqui

int main() {
    // TODO: Escreva seu código aqui
    // 1. Declare e inicialize a variável number
    // 2. Imprima o valor original
    // 3. Chame a função displayValue
    // 4. Imprima a mensagem de conclusão
    
    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