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.
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:
a e b são cópias das variáveis originaisPara resolver esse problema, podemos utilizar ponteiros:
void troca(int *num1, int *num2){
int aux;
aux = *num1;
*num1 = *num2;
*num2 = aux;
}
Nesse caso:
num1 e num2 armazenam os endereços das variáveis originaisnum1 e num2 acessam diretamente os valores armazenados nesses endereços