1 00:00:00,000 --> 00:00:03,080 >> Tagapagsalita 1: Ito ay lumiliko out na aming makakaya Matagumpay na magpalit ang mga halaga sa dalawang 2 00:00:03,080 --> 00:00:07,670 mga variable sa pamamagitan ng pagpasa ang mga ito sa isang function na hindi ayon sa halaga o sa pamamagitan ng kopya, ngunit 3 00:00:07,670 --> 00:00:10,390 sa pamamagitan ng reference o ayon sa kanilang mga address. 4 00:00:10,390 --> 00:00:12,740 Sa madaling salita, kailangan naming magamit isang bagay na kilala bilang isang pointer. 5 00:00:12,740 --> 00:00:15,580 Ang isang pointer, talaga, ay isa lamang ang address ng ilang mga variable. 6 00:00:15,580 --> 00:00:19,660 At kaya kung nagbibigay kami ng isang function na tinatawag na, sabihin nating, magpalit na may address ng 7 00:00:19,660 --> 00:00:23,550 isang variable at ang address ng isa pang variable, swap dapat empowered upang 8 00:00:23,550 --> 00:00:26,090 pumunta sa bawat isa sa mga address na iyon at talagang baguhin ang 9 00:00:26,090 --> 00:00:27,360 mga halaga na ang naroon. 10 00:00:27,360 --> 00:00:28,890 >> Ni makita ito sa konteksto Hayaan. 11 00:00:28,890 --> 00:00:31,360 Reimplement ni swap tulad ng sumusunod Hayaan. 12 00:00:31,360 --> 00:00:35,810 Una, ni baguhin ang isang hindi na maging isang int ipaalam ngunit upang maging isang pointer sa isang int o ang 13 00:00:35,810 --> 00:00:36,920 address ng isang int. 14 00:00:36,920 --> 00:00:40,820 Pagkatapos ay gawin ang pareho sa b, pagbabago ng ipaalam ito mula sa isang int upang maging tagaturo patungo sa isang 15 00:00:40,820 --> 00:00:42,780 int o ang address ng isang int. 16 00:00:42,780 --> 00:00:45,860 >> Pagkatapos ay sa loob ng magpalitan, sabihin pa rin Ipinahahayag tmp upang mayroon kami ng isang 17 00:00:45,860 --> 00:00:47,810 pansamantalang lugar para sa isang halaga ng. 18 00:00:47,810 --> 00:00:52,430 Ngunit isang ni halaga ay hindi mismo, dahil, muli, isang na ngayon ang address 19 00:00:52,430 --> 00:00:53,270 ng ilang int. 20 00:00:53,270 --> 00:00:57,320 Kaya kung gusto naming pumunta sa address na iyon at makakuha ng int sa address na iyon, mayroon kaming 21 00:00:57,320 --> 00:01:03,020 dereference ito pointer, sa pamamagitan din ng paraan ng ang star operator, pagsusulat ng isang bituin. 22 00:01:03,020 --> 00:01:05,470 >> Susunod, hindi ko nais upang baguhin ang halaga ng isang. 23 00:01:05,470 --> 00:01:08,770 Gusto kong baguhin ang halaga sa isang, isinasaisip, muli, 24 00:01:08,770 --> 00:01:10,350 na ang isang ay isang address. 25 00:01:10,350 --> 00:01:14,050 Kaya't upang gawin ito, muli Kailangan ko sasabihin bituin isang nakakakuha. 26 00:01:14,050 --> 00:01:18,360 At ngayon nais ko ang ilalagay sa halaga na sa b, hindi ang halaga ng b, na 27 00:01:18,360 --> 00:01:19,720 din ay isang address. 28 00:01:19,720 --> 00:01:22,280 >> Kaya muli sinasabi ko, star b. 29 00:01:22,280 --> 00:01:26,690 Pagkatapos, sa aking huling linya, kailangan kong patungan ng kung ano ang sa address na b may 30 00:01:26,690 --> 00:01:28,970 kung ano ang sa orihinal na lokasyon ng ng. 31 00:01:28,970 --> 00:01:32,910 Upang gawin iyon, gagawin ko star b nakakakuha tmp. 32 00:01:32,910 --> 00:01:34,820 >> Ngayon sa pagtatapos ng araw, ito function ay lamang pa rin 33 00:01:34,820 --> 00:01:35,950 tatlong linya ng code. 34 00:01:35,950 --> 00:01:39,860 Ngunit dahil ito ay pagmamanipula ng mga halaga sa paraan ng kanilang mga address at hindi ang 35 00:01:39,860 --> 00:01:43,700 raw na halaga na pumasa sa papunta sa function, inaangkin ko na swap ay ngayon 36 00:01:43,700 --> 00:01:47,670 empowered upang baguhin ang mga halaga na ang nakapasa sa pamamagitan ng kanilang mga address. 37 00:01:47,670 --> 00:01:49,510 >> Ngunit kailangan kong gumawa pa rin ng isang pagbabago. 38 00:01:49,510 --> 00:01:52,190 Hindi ko na pumasa sa x at y kanilang mga sarili. 39 00:01:52,190 --> 00:01:55,030 Kailangan ko upang pumasa sa mga address ng x at y. 40 00:01:55,030 --> 00:01:58,160 At upang gawin iyon, kailangan ko ng ilang bahagyang iba't ibang pagtatanda up tuktok. 41 00:01:58,160 --> 00:02:02,510 Gusto kong magpalit ng x at y sa pamamagitan ng pagpasa sa ang address ng x, na ipinapahiwatig ng 42 00:02:02,510 --> 00:02:07,190 ampersand x, at ang address ng y, na ipinapahiwatig ng ampersand y. 43 00:02:07,190 --> 00:02:10,570 >> Katulad nito, hanggang tuktok na ngayon ang kailangan kong baguhin ang prototype ang function na 44 00:02:10,570 --> 00:02:14,980 tumugma sa mga pagbabago na iyong ginawa ko, kaya na isang ay muli,, tagaturo patungo sa isang int. 45 00:02:14,980 --> 00:02:17,190 b ay muli,, tagaturo patungo sa isang int. 46 00:02:17,190 --> 00:02:18,770 At ngayon, maaaring mag-save ko ang aking file. 47 00:02:18,770 --> 00:02:20,680 At ni-recompile at patakbuhin ito ipaalam. 48 00:02:20,680 --> 00:02:25,330 >> Gumawa ng swap swap tuldok slash. 49 00:02:25,330 --> 00:02:29,660 At sa pagkakataong ito, x at y ay sa katunayan ngayon swapped tulad na ang kanilang mga halaga ay hindi 50 00:02:29,660 --> 00:02:31,950 1 at 2, pero 2 at 1. 51 00:02:31,950 --> 00:02:34,900