>> Tagapagsalita 1: Ito ay lumiliko out na aming makakaya Matagumpay na magpalit ang mga halaga sa dalawang
mga variable sa pamamagitan ng pagpasa ang mga ito sa isang function na hindi ayon sa halaga o sa pamamagitan ng kopya, ngunit
sa pamamagitan ng reference o ayon sa kanilang mga address.
Sa madaling salita, kailangan naming magamit isang bagay na kilala bilang isang pointer.
Ang isang pointer, talaga, ay isa lamang ang address ng ilang mga variable.
At kaya kung nagbibigay kami ng isang function na tinatawag na, sabihin nating, magpalit na may address ng
isang variable at ang address ng isa pang variable, swap dapat empowered upang
pumunta sa bawat isa sa mga address na iyon at talagang baguhin ang
mga halaga na ang naroon.
>> Ni makita ito sa konteksto Hayaan.
Reimplement ni swap tulad ng sumusunod Hayaan.
Una, ni baguhin ang isang hindi na maging isang int ipaalam ngunit upang maging isang pointer sa isang int o ang
address ng isang int.
Pagkatapos ay gawin ang pareho sa b, pagbabago ng ipaalam ito mula sa isang int upang maging tagaturo patungo sa isang
int o ang address ng isang int.
>> Pagkatapos ay sa loob ng magpalitan, sabihin pa rin Ipinahahayag tmp upang mayroon kami ng isang
pansamantalang lugar para sa isang halaga ng.
Ngunit isang ni halaga ay hindi mismo, dahil, muli, isang na ngayon ang address
ng ilang int.
Kaya kung gusto naming pumunta sa address na iyon at makakuha ng int sa address na iyon, mayroon kaming
dereference ito pointer, sa pamamagitan din ng paraan ng ang star operator, pagsusulat ng isang bituin.
>> Susunod, hindi ko nais upang baguhin ang halaga ng isang.
Gusto kong baguhin ang halaga sa isang, isinasaisip, muli,
na ang isang ay isang address.
Kaya't upang gawin ito, muli Kailangan ko sasabihin bituin isang nakakakuha.
At ngayon nais ko ang ilalagay sa halaga na sa b, hindi ang halaga ng b, na
din ay isang address.
>> Kaya muli sinasabi ko, star b.
Pagkatapos, sa aking huling linya, kailangan kong patungan ng kung ano ang sa address na b may
kung ano ang sa orihinal na lokasyon ng ng.
Upang gawin iyon, gagawin ko star b nakakakuha tmp.
>> Ngayon sa pagtatapos ng araw, ito function ay lamang pa rin
tatlong linya ng code.
Ngunit dahil ito ay pagmamanipula ng mga halaga sa paraan ng kanilang mga address at hindi ang
raw na halaga na pumasa sa papunta sa function, inaangkin ko na swap ay ngayon
empowered upang baguhin ang mga halaga na ang nakapasa sa pamamagitan ng kanilang mga address.
>> Ngunit kailangan kong gumawa pa rin ng isang pagbabago.
Hindi ko na pumasa sa x at y kanilang mga sarili.
Kailangan ko upang pumasa sa mga address ng x at y.
At upang gawin iyon, kailangan ko ng ilang bahagyang iba't ibang pagtatanda up tuktok.
Gusto kong magpalit ng x at y sa pamamagitan ng pagpasa sa ang address ng x, na ipinapahiwatig ng
ampersand x, at ang address ng y, na ipinapahiwatig ng ampersand y.
>> Katulad nito, hanggang tuktok na ngayon ang kailangan kong baguhin ang prototype ang function na
tumugma sa mga pagbabago na iyong ginawa ko, kaya na isang ay muli,, tagaturo patungo sa isang int.
b ay muli,, tagaturo patungo sa isang int.
At ngayon, maaaring mag-save ko ang aking file.
At ni-recompile at patakbuhin ito ipaalam.
>> Gumawa ng swap swap tuldok slash.
At sa pagkakataong ito, x at y ay sa katunayan ngayon swapped tulad na ang kanilang mga halaga ay hindi
1 at 2, pero 2 at 1.