1 00:00:00,000 --> 00:00:00,320 2 00:00:00,320 --> 00:00:02,700 >> DAVID J. Malan: Hebu kuandika mpango katika ambayo sisi kujaribu wabadilishane maadili ya 3 00:00:02,700 --> 00:00:04,970 vigezo mbili, x na y. 4 00:00:04,970 --> 00:00:07,490 Mapema, Nimeandika sana ya mpango huu tayari. 5 00:00:07,490 --> 00:00:11,130 Kwanza, mimi kutangaza variable, x, na kuhifadhi ndani yake thamani, 1. 6 00:00:11,130 --> 00:00:14,120 Kisha mimi kutangaza variable y na kuhifadhi ndani yake thamani, 2. 7 00:00:14,120 --> 00:00:17,700 >> Kisha mimi kuendelea na printf kuonyesha maadili ya wale vigezo mbili. 8 00:00:17,700 --> 00:00:21,090 Kisha mimi kudai kwa printf mwingine kuwa swapping vigezo hizo. 9 00:00:21,090 --> 00:00:23,690 Kisha mimi kuwaita kazi kuitwa wabadilishane. 10 00:00:23,690 --> 00:00:26,100 Na kisha mimi kudai kwamba vigezo wamekuwa walibadilishana. 11 00:00:26,100 --> 00:00:30,610 Na kisha mimi magazeti nje kwamba kile mimi kudai ni maadili mpya ya x na y. 12 00:00:30,610 --> 00:00:32,030 >> Sasa ni nini hii wabadilishane kazi? 13 00:00:32,030 --> 00:00:34,970 Siyo kitu ambacho huja na C. Hakika, kama sisi kuangalia juu ya yangu 14 00:00:34,970 --> 00:00:38,850 file, utasikia taarifa kwamba nimepata alitangaza mfano kwa ajili ya hii wabadilishane kazi 15 00:00:38,850 --> 00:00:42,750 kubainisha kwamba inachukua ints mbili, kiholela aitwaye a na b, na hii 16 00:00:42,750 --> 00:00:44,300 kazi haina kurudi kitu chochote. 17 00:00:44,300 --> 00:00:48,370 Hivyo labda, ni gani nini anasema katika swaps na maadili b ya. 18 00:00:48,370 --> 00:00:50,170 Hebu sasa kutekeleza wabadilishane. 19 00:00:50,170 --> 00:00:53,820 >> Kwanza, mimi nina kwenda kutangaza muda kutofautiana na hawawajui ni 20 00:00:53,820 --> 00:00:57,260 thamani katika, ingawa mimi naweza tu kama rahisi kuhifadhiwa katika ni b. 21 00:00:57,260 --> 00:01:00,925 Mimi kisha kwenda na mabadiliko thamani ya kuwa sawa na kwamba katika b. 22 00:01:00,925 --> 00:01:04,849 Na kisha mwisho, mimi nina kwenda na mabadiliko thamani ya b kuwa nini lakini ni 23 00:01:04,849 --> 00:01:06,340 sasa katika temp. 24 00:01:06,340 --> 00:01:08,910 >> Sasa mimi kudai kile nimepata kufanyika tu ni mantiki sahihi. 25 00:01:08,910 --> 00:01:12,780 Nimekuwa kuhifadhiwa katika variable muda, iliyopita a ya thamani kuwa b, na kisha 26 00:01:12,780 --> 00:01:15,580 iliyopita thamani b ya kuwa kile ilikuwa. 27 00:01:15,580 --> 00:01:18,620 Lakini wakati mimi kukusanya na kukimbia hii mpango, mimi wasiwasi kwamba si 28 00:01:18,620 --> 00:01:20,140 kwenda na kile Mimi naona. 29 00:01:20,140 --> 00:01:21,625 >> Kufanya, hakuna kubadilishana. 30 00:01:21,625 --> 00:01:24,350 dot kufyeka, hakuna kubadilishana. 31 00:01:24,350 --> 00:01:27,560 Na kwa bahati mbaya, kwa mujibu wa printf, thamani ya x na y, hata 32 00:01:27,560 --> 00:01:31,560 baada ya sisi wanadai kuwa swapping yao, bado ni 1 na 2. 33 00:01:31,560 --> 00:01:32,630 >> Sasa kwa nini ni kwamba? 34 00:01:32,630 --> 00:01:36,160 Naam, zinageuka kuwa katika kuu, wakati sisi wito huu wabadilishane kazi, kupita katika 35 00:01:36,160 --> 00:01:39,960 x na y kama hoja, ni kweli nakala za x na y kwamba 36 00:01:39,960 --> 00:01:41,310 ni kupita katika kubadilishana. 37 00:01:41,310 --> 00:01:45,430 Yaani, maadili yao ya 1 na 2 ni kupita katika kubadilishana kama na b. 38 00:01:45,430 --> 00:01:48,590 Na ni na b kwamba sisi ni hatimaye swapping katika kuu. 39 00:01:48,590 --> 00:01:50,810 >> Hiyo ni, 1 inakuwa 2, 2 inakuwa 1. 40 00:01:50,810 --> 00:01:54,630 Lakini kwa sababu kubadilishana hana thamani kurudi na kwa sababu wamepokea nakala za x 41 00:01:54,630 --> 00:01:58,220 na y, ni tabia ina hakuna athari kwenye x na y. 42 00:01:58,220 --> 00:02:02,610 Hakika, a na b ni scoped, hivyo kusema, wabadilishane, ambapo x na y kubaki 43 00:02:02,610 --> 00:02:03,990 scoped kuu. 44 00:02:03,990 --> 00:02:05,070 >> Hivyo tuna tatizo. 45 00:02:05,070 --> 00:02:06,320 Lakini jinsi ya kurekebisha hayo? 46 00:02:06,320 --> 00:02:08,312