>> SPEAKER 1: Si scopre che possiamo scambiare con successo i valori in due
variabili di passarli in un funzionamento non per valore o per la copia, ma
per riferimento o per i loro indirizzi.
In altre parole, abbiamo bisogno di far leva qualcosa conosciuto come un puntatore.
Un puntatore, in realtà, è solo l' l'indirizzo di una variabile.
E così, se forniamo una funzione chiamata, per esempio, scambiare con l'indirizzo di
una variabile e l'indirizzo di un'altra variabile, swap dovrebbe avere il potere di
andare a ciascuna di tali indirizzi ed effettivamente cambiare la
valori che ci sono.
>> Vediamo questo nel contesto.
Facciamo reimplementare di swap come segue.
In primo luogo, cambiamo un non essere un int ma per essere un puntatore ad un int o l'
indirizzo di un int.
Allora facciamolo lo stesso per b, cambiando da un int sia un puntatore a un
int o l'indirizzo di un int.
>> Poi all'interno di swap, diamo ancora dichiarare tmp in modo che abbiamo un
posto provvisorio per un valore di.
Ma una di valore non è un sé, perché, di nuovo, una è ora l'indirizzo
di qualche int.
Quindi, se vogliamo andare a questo indirizzo e ottenere int a quell'indirizzo, abbiamo
dereference questo puntatore, anche a titolo di l'operatore stella, scrivendo una stella.
>> Poi, io non voglio cambiare il valore di a.
Voglio cambiare il valore a, tenendo conto, di nuovo,
che a è un indirizzo.
Quindi, per farlo, ho di nuovo bisogno dire una stella ottiene.
Ed ora voglio mettere in valore che è in B, non il valore di b, che
è anche un indirizzo.
>> Quindi, ripeto, stella b.
Poi, nella mia ultima riga, ho bisogno di sovrascrivere ciò che è all'indirizzo b con
quello che era a casa di una posizione originale.
Per fare questo, faccio stella b ottiene tmp.
>> Ora, alla fine della giornata, questa funzione è ancora solo
tre righe di codice.
Ma perché è la manipolazione di valori mediante il loro indirizzo e non sono
valori grezzi che sono state approvate in funzione, io sostengo che la swap è ora
il potere di cambiare i valori che sono passati in via loro indirizzi.
>> Ma ho bisogno di fare ancora un cambio.
Non posso più passare xey stessi.
Ho bisogno di passare gli indirizzi di x ed y.
E per farlo, ho bisogno di qualche po ' diversi top notazione up.
Voglio scambiare x e y passando l'indirizzo di x, indicata con
commerciale x, e l'indirizzo della y, indicato da commerciale a.
>> Allo stesso modo, sulla parte superiore ora devo cambiare il prototipo della funzione di
corrispondere il cambiamento che ho fatto, in modo che a è, ancora una volta, un puntatore ad un int.
b è, ancora una volta, un puntatore ad un int.
E ora posso salvare il mio file.
E cerchiamo di ricompilare ed eseguirlo.
>> Fai puntino di swap barra di swap.
E questa volta, x ed y sono infatti ora scambiato in modo tale che i loro valori non sono
1 e 2, ma 2 e 1.