Fácil C
Dobrar um valor com ponteiro
Enunciado
Escreva um programa que declare int numero = 7; e um ponteiro para ele. Use o ponteiro para dobrar o valor de numero e imprima o resultado.
Requisitos
- Declarar
int numero = 7;e um ponteiroint *p = №. - Usar
*ppara multiplicar o valor por 2. - Imprimir o valor final de
numerocomprintf.
Código inicial
#include <stdio.h>
int main(void) {
int numero = 7;
/* crie o ponteiro e dobre o valor usando *p */
return 0;
}
Saída esperada
numero = 14
Ver dica
O ponteiro deve receber &numero. Depois, *p = *p * 2; altera o valor original.
Mostrar solução
#include <stdio.h>
int main(void) {
int numero = 7;
int *p = № /* p aponta para numero */
*p = *p * 2; /* le e dobra o valor atraves do ponteiro */
printf("numero = %d\n", numero);
return 0;
}
Passo a passo
int numero = 7;cria uma variável comum na pilha.int *p = №guarda empo endereço denumero; o&é obrigatório aqui.*p = *p * 2;lê o valor apontado (7), multiplica por2e grava14de volta no mesmo endereço.- Como
paponta paranumero, a alteração é visível emnumero. printfimprime o valor atualizado.
Por que funciona
O ponteiro não copia o valor: ele referencia o mesmo espaço de memória. Ao escrever em *p, alteramos diretamente a variável original. Isso é o coração do conceito de ponteiro: acesso indireto à memória.
Erros comuns
- Esquecer o
&:int *p = numero;gera aviso/erro, poisnumeroéint, não endereço. - Esquecer o
*na atribuição:p = p * 2;tenta multiplicar um endereço, o que não faz sentido. - Usar
*pantes de inicializarp: ponteiro selvagem, comportamento indefinido.
Outra forma de resolver
Sem ponteiro explícito, mas usando o mesmo endereço:
numero = numero * 2;
É mais simples, porém não demonstra o acesso indireto.
Saída esperada
numero = 14