Menu
Coddy logo textTech

Modificando Variáveis via Ponteiros

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

Agora você pode aproveitar o verdadeiro poder dos ponteiros: modificar a variável original através de uma função. Quando você passa um ponteiro para uma função, a função pode usar o operador de desreferência para alterar o valor armazenado naquele endereço de memória.

Dentro da função, você desreferencia o ponteiro usando o operador * para acessar e modificar o valor da variável original. Essa técnica é chamada de passagem por referência porque você está passando uma referência para a localização da variável na memória.

void doubleValue(int *ptr) {
    *ptr = *ptr * 2;  // Desreferenciar para modificar o valor original
}

int main() {
    int x = 5;
    doubleValue(&x);  // Passar o endereço de x
    // x agora é 10!
    return 0;
}

A chave é usar *ptr no lado esquerdo da atribuição para modificar o valor no endereço de memória que o ponteiro contém. Isso permite que funções alterem permanentemente variáveis da função chamadora, abrindo possibilidades de programação poderosas que a passagem por valor simplesmente não consegue alcançar.

challenge icon

Desafio

Fácil

Escreva um programa em C que demonstre a modificação de variáveis através de ponteiros, criando uma função que triplica o valor de um número inteiro.

Seu programa deve:

  1. Criar uma função chamada tripleValue que recebe um ponteiro para um inteiro como seu parâmetro
  2. Dentro da função tripleValue, usar o operador de desreferência para multiplicar o valor no endereço de memória por 3
  3. Dentro da função tripleValue, imprimir o novo valor no formato: Value tripled to: [value]
  4. Na função main, declarar uma variável inteira chamada number e inicializá-la com o valor 8
  5. Imprimir o valor original no formato: Original value: [value]
  6. Chamar a função tripleValue e passar o endereço da variável number usando o operador de endereço (address-of)
  7. Após a chamada da função, imprimir o valor final de number no formato: Final value: [value]

Sua saída deve demonstrar que a função modifica com sucesso a variável original através do ponteiro:

Original value: 8
Value tripled to: 24
Final value: 24

Este desafio demonstra o poder da passagem por referência usando ponteiros, onde a função pode modificar permanentemente a variável original ao desreferenciar o ponteiro e alterar o valor naquele local da memória.

Folha de consulta

Você pode modificar a variável original através de uma função usando ponteiros. Esta técnica é chamada de passagem por referência porque você está passando uma referência para o local da variável na memória.

Dentro da função, desreferencie o ponteiro usando o operador * para acessar e modificar o valor da variável original:

void doubleValue(int *ptr) {
    *ptr = *ptr * 2;  // Desreferencie para modificar o valor original
}

int main() {
    int x = 5;
    doubleValue(&x);  // Passe o endereço de x
    // x agora é 10!
    return 0;
}

Use *ptr no lado esquerdo da atribuição para modificar o valor no endereço de memória que o ponteiro contém. Isso permite que as funções alterem permanentemente as variáveis da função chamadora.

Experimente você mesmo

#include <stdio.h>

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

int main() {
    // TODO: Escreva seu código aqui
    // Declare e inicialize a variável number
    // Imprima o valor original
    // Chame a função tripleValue
    // Imprima o valor final
    
    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