aula 193

Como trocar o conteúdo de duas variáveis por meio de ponteiros?

Dando continuidade ao estudo de ponteiros em nosso curso de programação C, vamos ver nesta aula como criar um procedimento para trocar o conteúdo de duas variáveis por meio de ponteiros.

Se você entendeu o que estudos até aqui sobre ponteiros você não terá problemas para realizar este exercício.

Imagine o mesmo exercício sem ponteiros. Temos duas variáveis A e B e desejamos trocar os valores das duas variáveis. Precisamos de uma variável auxiliar para receber um dos valores e então fazer a troca, assim:
C = A;
A = B;
B = C;

Com ponteiros é exatamente a mesma ideia. Recebemos dois ponteiros para inteiros e queremos trocar os valores das variáveis. O primeiro passo é salvar um dos valores em uma variável auxiliar, assim:

    // fazendo uma cópia em c do conteúdo apontado por a
    c = *a;

Agora que fizemos uma cópia do conteúdo apontado por a, podemos substituir este valor, copiando o conteúdo apontado por b para a variável apontada por a, assim:

    // variável apontada por a recebe o conteúdo da variável apontada por b
    *a = *b;

Por fim, basta salvarmos a cópia que fizemos em c na variável apontada por b, assim:

    // variável apontada por b recebe o conteúdo de c
    *b = c;

Código completo em C para trocar o valor de duas variáveis por meio de ponteiros

/*
            Aula 193: Exercício 2

            Código escrito por Wagner Gaspar
            Maior de 2021

    2) Escreva um procedimento que troca os valores dos parâmetros recebidos.
    Sua assinatura deve ser: void troca(float *a, float *b);
*/

void troca(float *a, float *b){
    float c;
    c = *a;
    *a = *b;
    *b = c;
}

int main(){
    float num1 = 50, num2 = 101;

    printf("Num1: %.2f\tNum2: %.2f\n", num1, num2);
    troca(&num1, &num2);
    printf("Num1: %.2f\tNum2: %.2f\n", num1, num2);

    return 0;
}

Deixe um comentário

dezesseis − dois =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.