1 00:00:00,000 --> 00:00:00,320 2 00:00:00,320 --> 00:00:02,700 >> DAVID J. Malan: Við skulum skrifa forrit í sem við reynum að skipta á gildum 3 00:00:02,700 --> 00:00:04,970 tvær breytur, x og y. 4 00:00:04,970 --> 00:00:07,490 Fyrirfram, hef ég skrifað mikið af þessu forriti þegar. 5 00:00:07,490 --> 00:00:11,130 Fyrst, ég staðfesti breytu, x, og geyma í henni verðmæti, 1. 6 00:00:11,130 --> 00:00:14,120 Þá er ég að lýsa breytu y og geyma í henni verðmæti, 2. 7 00:00:14,120 --> 00:00:17,700 >> Þá vil ég halda áfram með printf að sýna gildin þessum tveimur breytum. 8 00:00:17,700 --> 00:00:21,090 Þá vil ég halda því fram með öðru printf að skipta þeim breytum. 9 00:00:21,090 --> 00:00:23,690 Þá kalla ég fall sem kallast skipti. 10 00:00:23,690 --> 00:00:26,100 Og þá er ég halda því fram að breyturnar hafa verið skipti. 11 00:00:26,100 --> 00:00:30,610 Og þá prenta ég út að það sem ég segist eru nýju gildin á x og y. 12 00:00:30,610 --> 00:00:32,030 >> Nú er það þessi aðgerð skipti? 13 00:00:32,030 --> 00:00:34,970 Það er ekki eitthvað sem kemur með C. Reyndar, ef við lítum efst minn 14 00:00:34,970 --> 00:00:38,850 skrá, youll 'taka eftir að ég hef lýst frumgerð fyrir þessa aðgerð skipti 15 00:00:38,850 --> 00:00:42,750 tilgreina að það tekur tvo ints, geðþótta kallað A og B, og þetta 16 00:00:42,750 --> 00:00:44,300 virka ekki aftur neitt. 17 00:00:44,300 --> 00:00:48,370 Svo væntanlega, er það hvað það segir skiptasamninga a og gildi b er. 18 00:00:48,370 --> 00:00:50,170 Skulum framkvæma nú skipti. 19 00:00:50,170 --> 00:00:53,820 >> Fyrst ætla ég að lýsa tímabundið breytilegir og úthluta henni 20 00:00:53,820 --> 00:00:57,260 gildi í, þó að ég gæti bara eins auðveldlega geymt í honum b. 21 00:00:57,260 --> 00:01:00,925 Ég ætla þá að fara að breyta gildi af a til að vera jöfn að í b. 22 00:01:00,925 --> 00:01:04,849 Og þá loks, ég ætla að breyta gildið b að vera hvað var en er 23 00:01:04,849 --> 00:01:06,340 nú í afleysingamanneskja. 24 00:01:06,340 --> 00:01:08,910 >> Nú ég kröfu sem ég hef bara gert er rökrétt. 25 00:01:08,910 --> 00:01:12,780 Ég hef geymt í tímabundna breytu, breytt úr gildi til að vera,, B, og þá 26 00:01:12,780 --> 00:01:15,580 breytt gildi b er að vera hvað var. 27 00:01:15,580 --> 00:01:18,620 En þegar ég safna saman og keyra þetta program, áhyggjur ég það er ekki 28 00:01:18,620 --> 00:01:20,140 fara það sem ég sé. 29 00:01:20,140 --> 00:01:21,625 >> Gera, engin skipti. 30 00:01:21,625 --> 00:01:24,350 punktur rista, engin skipti. 31 00:01:24,350 --> 00:01:27,560 Og því miður, í samræmi við printf, gildi af X og Y, jafnvel 32 00:01:27,560 --> 00:01:31,560 eftir að við segjast vera að skipta þá er enn 1 og 2. 33 00:01:31,560 --> 00:01:32,630 >> Nú er ástæðan fyrir því? 34 00:01:32,630 --> 00:01:36,160 Jæja, kemur í ljós að í helstu, þegar við kalla þessa aðgerð skipti, sem liggur í 35 00:01:36,160 --> 00:01:39,960 x og y sem rök, það er í raun afrit af x og y sem 36 00:01:39,960 --> 00:01:41,310 eru liðin skiptasamninga. 37 00:01:41,310 --> 00:01:45,430 Nefnilega, eru gildi þeirra 1 og 2 lentu í skipti sem a og b. 38 00:01:45,430 --> 00:01:48,590 Og það er a og b að við erum á endanum skipta í aðal. 39 00:01:48,590 --> 00:01:50,810 >> Það er að segja 1 verður 2, 2 verður 1. 40 00:01:50,810 --> 00:01:54,630 Heldur vegna skipti hefur ekkert skilagildi og vegna þess að það fékk afrit af x 41 00:01:54,630 --> 00:01:58,220 og y, er það hegðun hefur engin áhrif á x og y. 42 00:01:58,220 --> 00:02:02,610 Reyndar, a og b eru scoped, svo að segja, að skipta, en x og y eru 43 00:02:02,610 --> 00:02:03,990 scoped að helstu. 44 00:02:03,990 --> 00:02:05,070 >> Þannig að við höfum vandamál. 45 00:02:05,070 --> 00:02:06,320 En hvernig á að laga það? 46 00:02:06,320 --> 00:02:08,312