>> DAVID J. MALAN: Scriviamo un programma in che cerchiamo di scambiare i valori di
due variabili, x ed y.
In anticipo, ho scritto molto di questo programma già.
In primo luogo, dichiaro una variabile, x, e memorizzare in essa il valore 1.
Poi mi dichiaro variabile y e memorizzare in essa il valore 2.
>> Poi procedo con printf per visualizzare i valori di queste due variabili.
Allora io rivendico con un altro printf da scambiare tali variabili.
Poi chiamo una funzione chiamata swap.
E poi io sostengo che le variabili sono stati scambiati.
E poi ho stampo che ciò che io sostengo sono i nuovi valori di x ed y.
>> Ora che cosa è questa funzione swap?
Non è qualcosa che viene con C. Infatti, se guardiamo alla parte superiore del mio
il file, si noterà che ho dichiarato un prototipo di questa funzione swap
specificando che prende due int, arbitrariamente chiamato A e B, e questo
funzione non restituisce nulla.
Quindi, presumibilmente, si fa quello che dice in swap A e valori di b.
Vediamo ora implementare swap.
>> In primo luogo, ho intenzione di dichiarare un temporaneo variabile e assegnare
il valore di una, anche se solo potessi come facilmente memorizzati in esso b.
Ho quindi intenzione di modificare il valore di un essere uguale a quella in b.
E poi, infine, ho intenzione di cambiare l' valore di b ad essere quello che era, ma è un
ora in temperatura.
>> Ora io sostengo quello che ho appena fatto è logicamente corretto.
Ho memorizzato un in una variabile temporanea, cambiato il valore di un essere b è, e quindi
cambiato il valore di b ad essere quello di un era.
Ma quando ho compilare ed eseguire l' programma, mi preoccupo che non è
andando ciò che vedo.
>> Fai, no swap.
dot Slash, senza swap.
E purtroppo, secondo printf, il valore di x ed y, anche
dopo che pretendiamo di essere scambiando li, è ancora 1 e 2.
>> Ora, perché?
Beh, si scopre che in main, quando abbiamo chiamare questa funzione swap, passando
x e y come argomenti, in realtà è copie di x e y che
sono passati in swap.
Vale a dire, i loro valori 1 e 2 sono passato in swap a e b.
Ed è a e b che siamo alla fine scambio in principale.
>> Cioè, 1 diventa 2, 2 diventa 1.
Ma poiché di swap non ha alcun valore di ritorno e perché ha ricevuto copia di x
e y, è comportamento è nessun effetto su x ed y.
Infatti, a e b sono limitate, per così dire, per scambiare, mentre x e y rimangono
ambito di principale.
>> Quindi, abbiamo un problema.
Ma come risolvere il problema?