>> COLUMNA 1: Acontece que pudermos intercambiar correctamente os valores en dous
variables, pasando-os en un funcionar non por valor ou por copia, pero
por referencia ou por seus enderezos.
Noutras palabras, necesitamos alavancar algo coñecido como un punteiro.
Un punteiro, en realidade, é só o enderezo de algunha variable.
E por iso, se nós fornecen unha función chamada, digamos, intercambiar co enderezo do
unha variable e o enderezo doutro variable, cambio deberá ter poderes para
ir a cada un destes enderezos e, de feito, cambiar o
valores que están alí.
>> A ver isto no contexto.
Imos reimplementar cambio do seguinte xeito.
En primeiro lugar, imos cambiar a non ser un int pero para ser un punteiro para un int ou o
enderezo dun int.
Entón imos facer o mesmo para b, cambiando lo dun int para ser un punteiro a un
int ou o enderezo dun int.
>> Entón, dentro de intercambio, imos aínda declarar tmp para que teñamos unha
lugar temporal para un valor de.
Mais dun valor non é en si, xa que, de novo, un é agora o enderezo
dalgúns int.
Polo tanto, se queremos ir a este enderezo e obter int nese enderezo, temos
desreferenciava este punteiro, tamén por medio de o operador estrela, escribindo unha estrela.
>> Logo, eu non quero cambiar o valor dun.
Quero cambiar o valor en un, tendo en conta, de novo,
que é unha dirección.
Entón, para facelo, eu teño de novo dicir unha estrela queda.
E agora quero poñer no valor que está en b, e non o valor de b, que
tamén é un enderezo.
>> Entón unha vez digo, estrela b.
Entón, na miña última liña, eu teño substituír o que está en dirección b con
o que estaba en un lugar orixinal.
Para iso, fago estrela b queda tmp.
>> Agora, ao final do día, esta función aínda é só
tres liñas de código.
Pero por que é manipular valores por medio do seu enderezo e non o
valores brutos que foron pasados ​​ao función, eu afirmo que intercambio é agora
poderes para cambiar os valores que son pasados ​​a través dos seus enderezos.
>> Pero eu teño que facer un cambio aínda.
Eu non podo máis pasar en x e y si.
Necesito pasar nos enderezos de x e y.
E para facelo, eu teño un pouco diferente top notación arriba.
Quero cambiar x e y pasando en o enderezo de x, indicada por
ampersand x, eo enderezo y, indicará y comercial.
>> Do mesmo xeito, encima agora que eu teño cambiar prototipo da función para
coincidir co cambio que fixen, de xeito que a é, de novo, un punteiro para un int.
b é, de novo, un punteiro para un int.
E agora podo gardar o meu arquivo.
E imos recompilar e executalo.
>> Fai cambio barra intercambio de puntos.
E este tempo, x e y son, de feito agora trocados co fin de que os seus valores non son
1 e 2, pero 2 e 1.