Ponteiro e a função trocar
objetivo Como fazer uma função mudar uma variável de fora.
comum recebe uma CÓPIA. Se a função mudar o valor recebido, o original lá fora continua igual.
Pra mudar o original, a função recebe o . int *a é um : guarda onde o valor mora, não o valor.
Dentro da função, *a quer dizer o valor que está naquele endereço. Na chamada, &x entrega o endereço de x.
A função junta tudo isso e é o coração do bubble e do selection. Decore ela.
Onde todo mundo escorrega
- Trocar sem ponteiro compila, roda e não troca nada. É o erro clássico da prova.
- Esquecer a variável temporária faz os dois ficarem com o mesmo valor.
Desafio
Escreva a função trocar, que recebe os endereços de dois inteiros e troca os valores deles. Ela não devolve nada.
void trocar(int *a, int *b)| chamada | saída esperada |
|---|---|
| testar(10, 20) | 20 |
| testar(7, 3) | 3 |
| testar(-1, 5) | 5 |
void trocar(int *a, int *b) {
// use uma variavel temporaria
}
// a funcao abaixo ja esta pronta e serve so pro teste:
// ela troca x e y e devolve x depois da troca
int testar(int x, int y) {
trocar(&x, &y);
return x;
}Ctrl+Enter (Cmd+Enter no Mac) roda. Esc sai do editor.
Ver a pilha de chamadas passo a passo
Mostra o que o seu código faz em cada chamada. É uma simulação didática, não substitui o botão de testar.
Dicas
Tenta sozinho primeiro. Travou de verdade, abre a primeira.