Modificando Variáveis via Ponteiros
Parte da seção Lógica e Fluxo 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 por meio de uma função. Quando você passa um ponteiro para uma função, a função pode usar o operador de desreferenciação para alterar o valor armazenado nesse 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; // Dereference to modify the original value
}
int main() {
int x = 5;
doubleValue(&x); // Passe 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 armazena. Isso permite que as funções alterem permanentemente variáveis da função chamadora, possibilitando recursos poderosos de programação que a passagem por valor simplesmente não consegue alcançar.
Desafio
FácilEscreva um programa em C que demonstre a modificação de variáveis por meio de ponteiros, criando uma função que triplique o valor de um inteiro.
Seu programa deve:
- Criar uma função chamada
tripleValueque receba um ponteiro para um inteiro como parâmetro - Dentro da função
tripleValue, usar o operador de desreferenciação para multiplicar por 3 o valor no endereço de memória - Dentro da função
tripleValue, imprimir o novo valor no formato:Value tripled to: [value] - Na função
main, declarar uma variável inteira chamadanumbere inicializá-la com o valor 8 - Imprimir o valor original no formato:
Original value: [value] - Chamar a função
tripleValuee passar o endereço da variávelnumberusando o operador de endereço - Após a chamada da função, imprimir o valor final de
numberno formato:Final value: [value]
Sua saída deve demonstrar que a função modifica com sucesso a variável original por meio do ponteiro:
Original value: 8
Value tripled to: 24
Final value: 24Este desafio demonstra o poder da passagem por referência usando ponteiros, em que a função pode modificar permanentemente a variável original ao desreferenciar o ponteiro e alterar o valor nesse local da memória.
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
// Print the original value
// Chame a função tripleValue
// Imprima o valor final
return 0;
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Fundamentos de Ponteiros
O que é um Ponteiro?Declarando PonteirosO Operador de Endereço (&)O Operador de Desreferência (*)Ponteiros NULLRecapitulação: Fundamentos de Ponteiros4Projeto: Utilitário de Texto Simples
Visão Geral do ProjetoContando Caracteres2Ponteiros e Arrays
Nomes de Arrays como PonteirosElementos de Array - PonteirosAritmética de PonteirosComparando PonteirosRecapitulação: Percorrendo Arrays com Ponteiros5Ponteiros e Funções
Passagem por ValorPassando Ponteiros para FunçõesModificando Variáveis via PonteirosUm Exemplo Clássico: SwapPassando Arrays para FunçõesRecapitulação: Ponteiros como Argumentos3Arrays de Caracteres e Strings
Strings como Arrays de charO Terminador NuloEntrada de Strings com scanfUsando strlen()Usando strcpy()Usando strcat()Usando strcmp()Recapitulação: Funções Básicas de Strings6Gerenciamento de Memória
Memória Stack vs. HeapAlocação Dinâmica - malloc()Usando sizeof() para AlocaçãoVerificando Falhas de AlocaçãoLiberando Memória com free()Alocando com calloc()Recapitulação: Array Dinâmico9Projeto: Cadastro Simples de Contatos
Projeto: Definir a Struct de ContatoFunção para Criar um ContatoPratique por conta própria: Compilador de C online