>> Gjuha 1: Ajo rezulton ne mund bie në ujdi me sukses vlerat në dy
variablat duke kaluar ato në një funksionojnë jo sipas vlerës ose me kopje, por
me referenca ose nga adresat e tyre.
Me fjalë të tjera, ne kemi nevojë për të levave diçka e njohur si një tregues.
Një akrep, me të vërtetë, është vetëm Adresa prej rreth ndryshueshme.
Dhe kështu që në qoftë se ne të sigurojë një funksion të quajtur, të themi, të bie në ujdi me adresën e
një ndryshore dhe adresën e një tjetër variabël, swap duhet të fuqizohet për të
shkojnë në secilin prej këtyre adresave dhe në të vërtetë të ndryshojë
Vlerat që janë atje.
>> Le të shohim këtë në kontekst.
Le të reimplement swap si më poshtë.
Së pari, le të ndryshojë një mos jetë një int por të jetë një tregues për një int ose
adresa e një int.
Pastaj le të bëjë të njëjtën gjë për b, ndryshuar ajo nga një int të jetë një tregues për një
int ose adresën e një int.
>> Pastaj brenda swap, le ende deklarojnë tmp që të kemi një
vend i përkohshëm për një vlerë-së.
Por një e vlerë nuk është në vetvete, sepse, përsëri, a është tani adresa
e disa int.
Pra, nëse ne duam të shkojnë në atë adresë dhe merrni int në atë adresë, ne kemi
dereference këtë akrep, edhe nga mënyra e operatori yll, yll shkruar një.
>> Tjetra, unë nuk dua të ndryshojnë vlera e një.
Unë dua të ndryshojë vlerën në një, duke patur parasysh, përsëri,
se a është një adresë.
Pra, për të bërë këtë, unë përsëri nevojë për të thënë një yll merr.
Dhe tani unë dua të vënë në vlerën e që është në B nuk, vlera e B, e cila
gjithashtu është një adresë.
>> Pra, përsëri unë them, yll b.
Pastaj në linjë tim të fundit, unë duhet të mbishkruaj atë që është në adresën b me
ajo që ishte në një vend të origjinal.
Për ta bërë këtë, unë bëj yll b merr tmp.
>> Tani në fund të ditës, kjo funksion është ende vetëm
tre rreshta të kodit.
Por për shkak se është manipuluar vlerat me anë të adresës së tyre dhe nuk
Vlerat e papërpunuara që janë kaluar në funksion, unë pretendojnë se swap është tani
autorizuar për të ndryshuar vlerat që janë miratuar në via adresat e tyre.
>> Por kam nevojë për të bërë një ndryshim ende.
Unë mund të kalojë më në x dhe y vetë.
Unë kam nevojë për të kaluar në adresat e x dhe y.
Dhe për të bërë këtë, kam nevojë për disa pak ndryshme top simbol up.
Unë dua të bie në ujdi x dhe y duke kaluar në adresa e x, treguar nga
simbol x, dhe adresa e y, treguar nga y ampersand.
>> Në mënyrë të ngjashme, deri krye tani nuk kam nevojë për të ndryshojë prototip e funksionit të
ndeshje ndryshimin që kam bërë, në mënyrë që një është, përsëri, një tregues për një int.
b është, përsëri, një tregues për një int.
Dhe tani unë mund të ruaj dosjen time.
Dhe le të përpiluar dhe drejtuar atë.
>> Bëni shkëmbim shkëmbim dot çaj.
Dhe këtë herë, x dhe y janë me të vërtetë tani swapped tillë që vlerat e tyre nuk janë
1 dhe 2, por 2 dhe 1.