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.