1 00:00:00,000 --> 00:00:00,320 2 00:00:00,320 --> 00:00:02,700 >> David J. MALAN: magsulat ng isang programa sa Hayaan kung saan sinusubukan naming magpalit ng mga halaga ng 3 00:00:02,700 --> 00:00:04,970 dalawang variable, x at y. 4 00:00:04,970 --> 00:00:07,490 Sa maaga, na naisulat ko magkano ng programang ito nagagawa. 5 00:00:07,490 --> 00:00:11,130 Una, Ipinahahayag ko sa isang variable, x, at mag-store sa loob nito ang halaga, 1. 6 00:00:11,130 --> 00:00:14,120 Pagkatapos Ipinahahayag ko na variable y at mag-imbak sa loob nito ang halaga, 2. 7 00:00:14,120 --> 00:00:17,700 >> Pagkatapos ay magpatuloy ako sa printf upang ipakita ang ang mga halaga ng mga dalawang variable. 8 00:00:17,700 --> 00:00:21,090 Pagkatapos ay inaangkin ko na may isa pang printf na pagpapalit mga variable. 9 00:00:21,090 --> 00:00:23,690 Pagkatapos ay tumawag ako ng isang function na tinatawag na swap. 10 00:00:23,690 --> 00:00:26,100 At pagkatapos ay i-claim ko na ang mga variable Na-swapped. 11 00:00:26,100 --> 00:00:30,610 At pagkatapos ay i-print out ko na kung ano ang inaangkin ko ay ang bagong mga halaga ng x at y. 12 00:00:30,610 --> 00:00:32,030 >> Ano Ngayon ay ang function ng swap? 13 00:00:32,030 --> 00:00:34,970 Ito ay hindi isang bagay na ay may C. Sa katunayan, kung tiningnan namin sa tuktok ng aking 14 00:00:34,970 --> 00:00:38,850 file, mapapansin mo na ang ipinahayag ko isang prototype para sa function na swap 15 00:00:38,850 --> 00:00:42,750 pagtukoy na ito ay tumatagal ng dalawang ints, nagkataon na tinatawag na isang at b, at ito 16 00:00:42,750 --> 00:00:44,300 function na hindi nagbabalik ng anumang bagay. 17 00:00:44,300 --> 00:00:48,370 Kaya siguro, ginagawa nito kung ano ang sinasabi nito sa swaps isang at halaga b ni. 18 00:00:48,370 --> 00:00:50,170 Ngayon ipatupad ni swap Hayaan. 19 00:00:50,170 --> 00:00:53,820 >> Una, ako pagpunta sa ipinapahayag ng pansamantalang variable at magtalaga dito 20 00:00:53,820 --> 00:00:57,260 ang halaga sa isang, bagaman maaari ko lang bilang madali na naka-imbak sa loob nito b. 21 00:00:57,260 --> 00:01:00,925 Pagkatapos Pupunta ako upang baguhin ang halaga ng isang upang maging katumbas na in b. 22 00:01:00,925 --> 00:01:04,849 At pagkatapos ay sa wakas, pupuntahan ko na baguhin ang halaga ng mga b na maging kung ano ang isang dating ngunit ay 23 00:01:04,849 --> 00:01:06,340 ngayon sa Temp. 24 00:01:06,340 --> 00:01:08,910 >> Ngayon inaangkin ko kung ano na lang tapos na ako ay lohikal na tama. 25 00:01:08,910 --> 00:01:12,780 Naka-imbak ako ng isang sa isang pansamantalang variable, Binago ang halaga ng isang upang maging b, at pagkatapos ay 26 00:01:12,780 --> 00:01:15,580 Binago ang halaga b na maging kung ano ang isang ni ay. 27 00:01:15,580 --> 00:01:18,620 Ngunit kapag ako sumulat ng libro at patakbuhin ang mga ito programa, mag-alala ako na hindi 28 00:01:18,620 --> 00:01:20,140 pagpunta kung ano ang nakikita ko. 29 00:01:20,140 --> 00:01:21,625 >> Gawing, walang swap. 30 00:01:21,625 --> 00:01:24,350 tuldok iwa, walang swap. 31 00:01:24,350 --> 00:01:27,560 At sa kasamaang-palad, ayon sa printf, ang halaga ng x at y, kahit 32 00:01:27,560 --> 00:01:31,560 pagkatapos i-claim namin na pagpapalit mga ito, ay pa rin ng 1 at 2. 33 00:01:31,560 --> 00:01:32,630 >> Ngayon kung bakit ay na? 34 00:01:32,630 --> 00:01:36,160 Well, ito ay lumiliko out na sa main, kung kailan namin tawagan ang function ng swap, pagpasa sa 35 00:01:36,160 --> 00:01:39,960 x at y bilang argumento, ito ay aktwal na mga kopya ng x at y na 36 00:01:39,960 --> 00:01:41,310 ang nakapasa sa swap. 37 00:01:41,310 --> 00:01:45,430 Lalo, ang kanilang mga halaga ng 1 at 2 ay pumasang sa magpalitan bilang isang at b. 38 00:01:45,430 --> 00:01:48,590 At ito ay isang at b na hindi kami sa huli pagpapalit sa pangunahing. 39 00:01:48,590 --> 00:01:50,810 >> Iyon ay, ang 1 ay nagiging 2, 2 naging 1. 40 00:01:50,810 --> 00:01:54,630 Ngunit dahil magpalitan ay walang halaga return at dahil nakatanggap ito ng mga kopya ng x 41 00:01:54,630 --> 00:01:58,220 at y, ito ay ang pag-uugali ay walang epekto sa x at y. 42 00:01:58,220 --> 00:02:02,610 Sa katunayan, isang at b ay scoped, kaya na magsalita, upang magpalit, samantalang ang x at y mananatiling 43 00:02:02,610 --> 00:02:03,990 scoped sa main. 44 00:02:03,990 --> 00:02:05,070 >> Kaya mayroon tayong problema. 45 00:02:05,070 --> 00:02:06,320 Ngunit kung paano ayusin ito? 46 00:02:06,320 --> 00:02:08,312