https://youtu.be/mBVT3kmsL-g?si=6d_2MEMzlozNtYIo

Até este momento, foi observado que variáveis locais possuem tempo de vida limitado à execução das funções, e que a passagem de parâmetros ocorre, em geral, por cópia de valores.

No entanto, em diversos cenários, é necessário que uma função seja capaz de modificar diretamente variáveis definidas em outro contexto.

Os ponteiros permitem esse tipo de comportamento.

3.1 Limitação da Passagem por Valor

Considere a seguinte situação:

Deseja-se criar uma função que troque os valores de duas variáveis.

Uma abordagem direta poderia ser:

void troca(int a, int b){
    int aux;
    aux = a;
    a = b;
    b = aux;
}

No entanto, essa função não funciona como esperado.

Isso ocorre porque:

3.2 Passagem por Referência com Ponteiros

Para resolver esse problema, podemos utilizar ponteiros:

void troca(int *num1, int *num2){
    int aux;
    aux = *num1;
    *num1 = *num2;
    *num2 = aux;
}

Nesse caso:

3.3 Como Utilizar a Função