>> DAVID J. Malan: Hebu kuandika mpango katika ambayo sisi kujaribu wabadilishane maadili ya
vigezo mbili, x na y.
Mapema, Nimeandika sana ya mpango huu tayari.
Kwanza, mimi kutangaza variable, x, na kuhifadhi ndani yake thamani, 1.
Kisha mimi kutangaza variable y na kuhifadhi ndani yake thamani, 2.
>> Kisha mimi kuendelea na printf kuonyesha maadili ya wale vigezo mbili.
Kisha mimi kudai kwa printf mwingine kuwa swapping vigezo hizo.
Kisha mimi kuwaita kazi kuitwa wabadilishane.
Na kisha mimi kudai kwamba vigezo wamekuwa walibadilishana.
Na kisha mimi magazeti nje kwamba kile mimi kudai ni maadili mpya ya x na y.
>> Sasa ni nini hii wabadilishane kazi?
Siyo kitu ambacho huja na C. Hakika, kama sisi kuangalia juu ya yangu
file, utasikia taarifa kwamba nimepata alitangaza mfano kwa ajili ya hii wabadilishane kazi
kubainisha kwamba inachukua ints mbili, kiholela aitwaye a na b, na hii
kazi haina kurudi kitu chochote.
Hivyo labda, ni gani nini anasema katika swaps na maadili b ya.
Hebu sasa kutekeleza wabadilishane.
>> Kwanza, mimi nina kwenda kutangaza muda kutofautiana na hawawajui ni
thamani katika, ingawa mimi naweza tu kama rahisi kuhifadhiwa katika ni b.
Mimi kisha kwenda na mabadiliko thamani ya kuwa sawa na kwamba katika b.
Na kisha mwisho, mimi nina kwenda na mabadiliko thamani ya b kuwa nini lakini ni
sasa katika temp.
>> Sasa mimi kudai kile nimepata kufanyika tu ni mantiki sahihi.
Nimekuwa kuhifadhiwa katika variable muda, iliyopita a ya thamani kuwa b, na kisha
iliyopita thamani b ya kuwa kile ilikuwa.
Lakini wakati mimi kukusanya na kukimbia hii mpango, mimi wasiwasi kwamba si
kwenda na kile Mimi naona.
>> Kufanya, hakuna kubadilishana.
dot kufyeka, hakuna kubadilishana.
Na kwa bahati mbaya, kwa mujibu wa printf, thamani ya x na y, hata
baada ya sisi wanadai kuwa swapping yao, bado ni 1 na 2.
>> Sasa kwa nini ni kwamba?
Naam, zinageuka kuwa katika kuu, wakati sisi wito huu wabadilishane kazi, kupita katika
x na y kama hoja, ni kweli nakala za x na y kwamba
ni kupita katika kubadilishana.
Yaani, maadili yao ya 1 na 2 ni kupita katika kubadilishana kama na b.
Na ni na b kwamba sisi ni hatimaye swapping katika kuu.
>> Hiyo ni, 1 inakuwa 2, 2 inakuwa 1.
Lakini kwa sababu kubadilishana hana thamani kurudi na kwa sababu wamepokea nakala za x
na y, ni tabia ina hakuna athari kwenye x na y.
Hakika, a na b ni scoped, hivyo kusema, wabadilishane, ambapo x na y kubaki
scoped kuu.
>> Hivyo tuna tatizo.
Lakini jinsi ya kurekebisha hayo?