>> COLUNA 1: Acontece que pudermos trocar com sucesso os valores em dois
variáveis, passando-os em um funcionar não por valor ou por cópia, mas
por referência ou por seus endereços.
Em outras palavras, precisamos alavancar algo conhecido como um ponteiro.
Um ponteiro, na verdade, é apenas o endereço de alguma variável.
E por isso, se nós fornecemos uma função chamada, digamos, trocar com o endereço do
uma variável e o endereço de outra variável, troca deverá ter poderes para
ir para cada um desses endereços e, na verdade, alterar o
valores que estão lá.
>> Vamos ver isso no contexto.
Vamos reimplementar troca da seguinte forma.
Primeiro, vamos mudar a não ser um int mas para ser um ponteiro para um int ou o
endereço de um int.
Então vamos fazer o mesmo para b, mudando lo de um int para ser um ponteiro para um
int ou o endereço de um int.
>> Então, dentro de swap, vamos ainda declarar tmp para que tenhamos uma
lugar temporário para um valor de.
Mas de um valor não é em si, porque, novamente, um é agora o endereço
de alguns int.
Portanto, se queremos ir para esse endereço e obter int nesse endereço, temos
desreferenciava este ponteiro, também por meio de o operador estrela, escrevendo uma estrela.
>> Em seguida, eu não quero mudar o valor de um.
Eu quero mudar o valor em um, tendo em mente, de novo,
que é um endereço.
Então, para fazer isso, eu preciso de novo dizer uma estrela fica.
E agora eu quero colocar no valor que está em b, e não o valor de b, que
também é um endereço.
>> Então mais uma vez eu digo, estrela b.
Então, na minha última linha, eu preciso substituir o que está em endereço b com
o que estava em de um local original.
Para fazer isso, eu faço estrela b fica tmp.
>> Agora, no final do dia, esta função ainda é apenas
três linhas de código.
Mas porque é manipular valores por meio de seu endereço e não o
valores brutos que foram passados ​​para o função, eu afirmo que swap é agora
poderes para alterar os valores que são passados ​​através de seus endereços.
>> Mas eu preciso fazer uma mudança ainda.
Eu não posso mais passar em x e y si.
Eu preciso passar nos endereços de x e y.
E para fazer isso, eu preciso de um pouco diferente top notação cima.
Quero trocar x e y passando em o endereço de x, indicada pela
ampersand x, eo endereço y, indicada por y comercial.
>> Da mesma forma, em cima agora que eu preciso mudar protótipo da função para
coincidir com a mudança que eu fiz, de modo que a é, de novo, um ponteiro para um int.
b é, de novo, um ponteiro para um int.
E agora eu posso salvar meu arquivo.
E vamos recompilar e executá-lo.
>> Faça troca barra troca de pontos.
E este tempo, x e y são, de facto agora trocados de modo a que os seus valores não são
1 e 2, mas 2 e 1.