Pular para o conteúdo

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.

exemplo.cclique numa linha pra entender 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)
o que a função tem que devolver
chamadasaída esperada
testar(10, 20)20
testar(7, 3)3
testar(-1, 5)5
a sua função
linha 1
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.

aperte Rodar pra ver a saída aqui
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.