1 00:00:00,000 --> 00:00:11,320 2 00:00:11,320 --> 00:00:13,260 >> DAVID Malan: Hello, dhe mirëpritur mbrapa për CS50. 3 00:00:13,260 --> 00:00:14,860 Pra, kjo është fundi i javës së katër. 4 00:00:14,860 --> 00:00:16,680 Vetëm një Njoftimi i parë. 5 00:00:16,680 --> 00:00:19,600 Pra, e ashtuquajtura pestë hëna është vijnë deri të hënën e ardhshme. 6 00:00:19,600 --> 00:00:22,800 Kjo është mundësi për të ndryshuar nga SAT / UNSAT te nje klasën letër, ose nga 7 00:00:22,800 --> 00:00:24,130 klasën letër SAT / UNSAT. 8 00:00:24,130 --> 00:00:27,130 Annoyingly, se procesi i bën të kërkojë një nënshkrim, sepse ju duhet të plotësoni 9 00:00:27,130 --> 00:00:28,770 nga një prej këtyre Shto / Drop forma trëndafili. 10 00:00:28,770 --> 00:00:31,680 >> Sepse teknikisht, SAT / UNSAT version dhe klasa letër version 11 00:00:31,680 --> 00:00:33,320 kanë numra të dallueshme katalog. 12 00:00:33,320 --> 00:00:34,240 Por asnjë marrëveshje e madhe. 13 00:00:34,240 --> 00:00:36,620 Vetëm të dalë për mua ose për të vjedh ose për Lauren në çdo pikë. 14 00:00:36,620 --> 00:00:39,550 Ose na dërgoni email në qoftë se ju nuk keni lloj shkresa keni nevojë për sot, dhe ne 15 00:00:39,550 --> 00:00:43,410 do të jetë i sigurt për të ju ndihmojë të marrë kujdes se para hënën. 16 00:00:43,410 --> 00:00:45,780 >> Të gjithë të drejtë, kështu që sot - 17 00:00:45,780 --> 00:00:47,630 në fakt, ka pak e një jehonë. 18 00:00:47,630 --> 00:00:51,070 Mund të kemi ton mua poshtë një grimë? 19 00:00:51,070 --> 00:00:51,730 OK. 20 00:00:51,730 --> 00:00:54,850 Pra, sot, ne kemi prezantuar një temë njohur si pointers. 21 00:00:54,850 --> 00:00:57,770 Dhe unë do të pranoj që kjo është një nga tema më të ndërlikuara se ne priren të 22 00:00:57,770 --> 00:01:00,960 mbulojë në këtë klasë, apo me të vërtetë ndonjë kurs hyrës që përdor C. 23 00:01:00,960 --> 00:01:05,510 >> Por të marrë fjalën time për të, veçanërisht Nëse mendja juaj ndjehet një prirje pak më shumë 24 00:01:05,510 --> 00:01:07,100 sot dhe në javët që do të vijnë. 25 00:01:07,100 --> 00:01:10,340 Kjo nuk është përfaqësuese e keni marrë çdo e keqe në këtë ai thjesht do të thotë se 26 00:01:10,340 --> 00:01:13,360 kjo është një temë e veçanërisht të sofistikuar Unë ju premtoj se, disa javë 27 00:01:13,360 --> 00:01:17,610 kështu, të gjithë do të duket shumë e habitshme drejtpërdrejtë në retrospektivë. 28 00:01:17,610 --> 00:01:18,720 >> Unë ende kujtohet në këtë ditë. 29 00:01:18,720 --> 00:01:22,190 Unë isha ulur në Elliott Dining Hall, ulur pranë TF tim Nishat Mehta, 30 00:01:22,190 --> 00:01:24,070 i cili ishte një banor i shtëpisë Elliott. 31 00:01:24,070 --> 00:01:26,340 Dhe për disa arsye, kjo topic vetëm klikimeve. 32 00:01:26,340 --> 00:01:29,430 Cila është të them se edhe unë luftuar me atë për disa sasinë e kohës, por unë 33 00:01:29,430 --> 00:01:33,610 do të bëj çmos për të ndihmuar të shmangur ndonjë të tillë luftë me një temë që në fund të fundit 34 00:01:33,610 --> 00:01:34,580 është mjaft i fuqishëm. 35 00:01:34,580 --> 00:01:37,350 >> Në fakt, një nga temat që ne do të diskutuar në javë tek vijnë eshte se 36 00:01:37,350 --> 00:01:41,130 të sigurisë, dhe se si ju mund të vërtetë shfrytëzojnë makina në mënyra të 37 00:01:41,130 --> 00:01:42,320 që nuk ishin të destinuara. 38 00:01:42,320 --> 00:01:45,850 Dhe ato janë zakonisht eksploatimet rezultat i bugs, gabime që ne 39 00:01:45,850 --> 00:01:49,740 njerëzit bëjnë duke mos kuptuar disa i zbatimit themelor 40 00:01:49,740 --> 00:01:52,250 Detajet nëpërmjet programeve të cilat janë bërë. 41 00:01:52,250 --> 00:01:55,410 >> Tani për të bërë këtë duket të gjithë përdoruesit më shumë miqësore, unë mendova se do të luajë një 10 42 00:01:55,410 --> 00:01:59,680 preview dytë e një claymation pak figurë emrin Binky i cili u soll në 43 00:01:59,680 --> 00:02:03,020 jeta nga një mik i yni në Stanford, Profesor Nick Parlante. 44 00:02:03,020 --> 00:02:06,753 Pra më lejoni të ju jap këtë teaser e Binky këtu. 45 00:02:06,753 --> 00:02:09,520 >> [Video playback] 46 00:02:09,520 --> 00:02:10,380 >> -Hej, Binky. 47 00:02:10,380 --> 00:02:11,050 Zgjoheni. 48 00:02:11,050 --> 00:02:13,610 Është koha për argëtim akrep. 49 00:02:13,610 --> 00:02:14,741 >> -Çfarë është ajo? 50 00:02:14,741 --> 00:02:16,440 Mësoni rreth pointers? 51 00:02:16,440 --> 00:02:17,928 Oh, goodie. 52 00:02:17,928 --> 00:02:18,920 >> [VIDEO END rishikim] 53 00:02:18,920 --> 00:02:20,670 >> DAVID Malan: Kjo është e Stanford shkenca kompjuterike. 54 00:02:20,670 --> 00:02:23,194 Pra, më shumë që do të vijnë. 55 00:02:23,194 --> 00:02:24,930 >> [Duartrokitje] 56 00:02:24,930 --> 00:02:26,660 >> DAVID Malan: Na vjen keq, Nick. 57 00:02:26,660 --> 00:02:30,680 >> Pra, kujtojnë se herën e fundit ne përfundoi në kjo cliffhanger vërtetë emocionuese 58 00:02:30,680 --> 00:02:32,960 ku ky funksion thjesht nuk keni punuar. 59 00:02:32,960 --> 00:02:34,960 Së paku intuitivisht, ajo ndjehet si ajo duhet të punojnë. 60 00:02:34,960 --> 00:02:37,600 Thjesht shkëmbejnë vlerat të dy integers. 61 00:02:37,600 --> 00:02:40,915 Por kujtoj se kur ne shtypura jashtë Vlerat fillestare në njërën kryesor, dhe 62 00:02:40,915 --> 00:02:44,210 dy, ata ishin ende një dhe dy dhe jo dy dhe një. 63 00:02:44,210 --> 00:02:46,070 >> Pra më lejoni të vërtetë kaloni mbi te pajisjes. 64 00:02:46,070 --> 00:02:50,180 Dhe ju shkrova në një grimë e kodit skeletik në avancojë këtu, ku unë pretendojnë se x 65 00:02:50,180 --> 00:02:52,500 do të jetë 1, y do të jetë 2. 66 00:02:52,500 --> 00:02:54,810 Unë pastaj të shtypura nga dy prej tyre Vlerat me f shtypura. 67 00:02:54,810 --> 00:02:57,540 >> Unë pastaj pretendojnë se këtu poshtë ne jemi duke shkuar për të bie në ujdi tyre. 68 00:02:57,540 --> 00:03:00,800 Kam lënë një vend bosh këtu për ne plotësoni në sot në një moment të vetëm. 69 00:03:00,800 --> 00:03:03,380 Pastaj, unë jam duke shkuar për të pretendojnë se dy variabla janë swapped. 70 00:03:03,380 --> 00:03:04,770 Atëherë unë jam duke shkuar për të shtypur ato jashtë përsëri. 71 00:03:04,770 --> 00:03:07,090 Dhe kështu që shpresojmë se, unë duhet të shihni 1, 2. 72 00:03:07,090 --> 00:03:07,380 2, 1. 73 00:03:07,380 --> 00:03:09,830 Kjo është e thjeshtë super Qëllimi tani. 74 00:03:09,830 --> 00:03:12,430 >> Pra, si do të shkojmë në lidhje shkëmbejnë dy variabla? 75 00:03:12,430 --> 00:03:17,220 E pra, nëse unë propozoj këtu se këto gota mund të përfaqësojnë kujtesën në një kompjuter. 76 00:03:17,220 --> 00:03:19,070 Kjo është një kafshon pak, kjo është një tjetër kafshon pak. 77 00:03:19,070 --> 00:03:23,260 Mund të kemi një vullnetar të vijë në UP dhe përzierje disa pije na, nëse i njohur? 78 00:03:23,260 --> 00:03:23,920 Come on up. 79 00:03:23,920 --> 00:03:24,815 Cili është emri juaj? 80 00:03:24,815 --> 00:03:25,260 >> Jess: Jess. 81 00:03:25,260 --> 00:03:25,690 >> DAVID Malan: Jess? 82 00:03:25,690 --> 00:03:26,540 Come on up, Jess. 83 00:03:26,540 --> 00:03:29,180 Nëse ju nuk e mendjes, ne kemi për të vënë Glass Google për ju në mënyrë që ne mund të 84 00:03:29,180 --> 00:03:30,430 përjetësoj këtë. 85 00:03:30,430 --> 00:03:32,800 86 00:03:32,800 --> 00:03:34,670 OK, qelqi. 87 00:03:34,670 --> 00:03:37,250 Regjistro një video. 88 00:03:37,250 --> 00:03:43,103 Dhe OK, ne jemi të mirë për të shkoni me Jess këtu. 89 00:03:43,103 --> 00:03:43,810 Dakord. 90 00:03:43,810 --> 00:03:45,120 Gëzohem që u njohëm. 91 00:03:45,120 --> 00:03:47,720 >> Pra, ajo që unë do të doja që ju bëni këtu - në qoftë se ju mund të, mjaft shpejt - 92 00:03:47,720 --> 00:03:51,040 vetëm na derdh gjysmën e një gotë portokalli lëng dhe gjysmën e një gotë qumësht, 93 00:03:51,040 --> 00:03:55,710 përfaqësojnë efektivisht numrat 1 në një filxhan dhe 2 në Kupën e tjera. 94 00:03:55,710 --> 00:04:01,380 95 00:04:01,380 --> 00:04:02,630 >> Kjo do të jetë mirë pamjet. 96 00:04:02,630 --> 00:04:04,910 97 00:04:04,910 --> 00:04:05,860 >> Jess: Më vjen keq. 98 00:04:05,860 --> 00:04:06,330 >> DAVID Malan: Jo, jo. 99 00:04:06,330 --> 00:04:08,703 Është në rregull. 100 00:04:08,703 --> 00:04:10,120 Bukur. 101 00:04:10,120 --> 00:04:12,950 Të gjithë të drejtë, kështu që ne kemi katër bytes vlerë të lëng portokalli. 102 00:04:12,950 --> 00:04:14,460 Ne do quajti atë vlerën 1. 103 00:04:14,460 --> 00:04:16,579 Tani një tjetër katër bytes vlerë e qumështit. 104 00:04:16,579 --> 00:04:18,519 Do të thërrasë atë vlerë 2. 105 00:04:18,519 --> 00:04:20,440 Pra, x dhe y, respektivisht. 106 00:04:20,440 --> 00:04:23,450 >> Të gjithë të drejtë, kështu që tani në qoftë se detyrë në dorë - për ju, Jess, në frontin e të gjitha 107 00:04:23,450 --> 00:04:24,270 e shokëve tuaj - 108 00:04:24,270 --> 00:04:28,510 është që të bie në ujdi vlerat e x dhe y të tillë se ne duam lëng portokalli në 109 00:04:28,510 --> 00:04:32,070 kupa-tjetrin dhe qumësht në këtë kupe, si mund ti - para se të bëjë në fakt 110 00:04:32,070 --> 00:04:34,020 ajo - shkoni për të bërë këtë? 111 00:04:34,020 --> 00:04:35,220 >> OK, vendim i mençur. 112 00:04:35,220 --> 00:04:36,340 Pra, ju keni nevojë për një memorie pak më shumë. 113 00:04:36,340 --> 00:04:38,190 Pra, le të ndajë një të përkohshme filxhan, nëse ju do. 114 00:04:38,190 --> 00:04:40,540 Dhe tani të vazhdojë të bie në ujdi x dhe y. 115 00:04:40,540 --> 00:04:52,950 116 00:04:52,950 --> 00:04:53,530 >> Excellent. 117 00:04:53,530 --> 00:04:54,420 Pra, shumë mirë bërë. 118 00:04:54,420 --> 00:04:55,670 Thank you so much, Jess. 119 00:04:55,670 --> 00:04:59,520 120 00:04:59,520 --> 00:05:00,020 Urdhëro. 121 00:05:00,020 --> 00:05:01,950 Një suvenir pak. 122 00:05:01,950 --> 00:05:04,350 >> OK, kështu që natyrisht, ide super e thjeshtë. 123 00:05:04,350 --> 00:05:07,500 Plotësisht intuitiv që ne kemi nevojë për një grimë më shumë hapësirë ​​e magazinimit - në këtë formë, 124 00:05:07,500 --> 00:05:09,750 një filxhan - në qoftë se ne të vërtetë duan të bie në ujdi këtyre dy variablave. 125 00:05:09,750 --> 00:05:11,110 Pra, le të bëjë pikërisht këtë. 126 00:05:11,110 --> 00:05:14,330 Deri këtu në mes ku unë pretendojnë unë jam do të jetë bërë disa shkëmbejnë, unë do 127 00:05:14,330 --> 00:05:15,720 të shkojnë përpara dhe të deklarojë temp. 128 00:05:15,720 --> 00:05:17,980 Dhe unë do të vënë atë të barabartë me, të themi, x. 129 00:05:17,980 --> 00:05:21,110 >> Atëherë unë jam duke shkuar për të ndryshuar vlerën e x vetëm si Jess bëri këtu me 130 00:05:21,110 --> 00:05:23,200 qumësht dhe lëng portokalli të jetë e barabartë me y. 131 00:05:23,200 --> 00:05:27,460 Dhe unë jam duke shkuar për të ndryshuar y të jetë e barabartë të mos x, sepse tani ne do të jetë 132 00:05:27,460 --> 00:05:29,530 mbërthyer në një rreth, por më tepër Temp. 133 00:05:29,530 --> 00:05:33,170 Ku kam përkohësisht - ose ku Jess përkohësisht të vënë lëng portokalli 134 00:05:33,170 --> 00:05:35,460 para se clobbering filxhan me qumësht. 135 00:05:35,460 --> 00:05:37,250 >> Pra më lejoni të shkoj përpara dhe të bëjë këtë tani. 136 00:05:37,250 --> 00:05:39,210 Ajo që quhet noswap.c. 137 00:05:39,210 --> 00:05:41,190 Dhe tani më lejoni të kandidojë asnjë shkëmbim. 138 00:05:41,190 --> 00:05:43,910 Dhe me të vërtetë unë shoh, nëse unë të zgjeruar dritare pak, se 139 00:05:43,910 --> 00:05:45,160 x eshte 1, y eshte 2. 140 00:05:45,160 --> 00:05:47,230 Dhe pastaj është 2 x, y është 1. 141 00:05:47,230 --> 00:05:51,910 >> Por kujtojmë se të hënën ne e bëmë gjëra pak më ndryshe ku unë 142 00:05:51,910 --> 00:05:56,760 implementuar në vend një funksion ndihmëtar, në qoftë se ju do, që në fakt ishte e pavlefshme. 143 00:05:56,760 --> 00:05:58,010 Unë e quajti atë të bie në ujdi. 144 00:05:58,010 --> 00:06:01,600 I dha asaj dy parametra, dhe unë e quajti atyre një dhe kam thirrur ata b. 145 00:06:01,600 --> 00:06:04,380 >> Sinqerisht, unë mund të telefononi ata x dhe y. 146 00:06:04,380 --> 00:06:06,040 Nuk ka asgjë ndalimin e mua nga duke bërë që. 147 00:06:06,040 --> 00:06:08,140 Por unë do të argumentoja se është atëherë një pak i paqartë. 148 00:06:08,140 --> 00:06:11,910 Sepse kujtojnë për të hënën se ne pohoi se këto parametra ishin 149 00:06:11,910 --> 00:06:13,650 kopjet e vlerave kaluar in 150 00:06:13,650 --> 00:06:15,640 Kështu që vetëm messes me tuaj Mendja, unë mendoj se, në qoftë se ju përdorni 151 00:06:15,640 --> 00:06:17,370 saktësisht të njëjtat ndryshore. 152 00:06:17,370 --> 00:06:20,150 >> Kështu që unë do të thërrasë atyre një vend dhe b, vetëm për qartësi. 153 00:06:20,150 --> 00:06:21,840 Por ne mund të quajmë ato më të çdo gjë që ne duam. 154 00:06:21,840 --> 00:06:26,280 Dhe unë jam duke shkuar për të kopjoni dhe ngjisni efektivisht ky kod nga atje lart 155 00:06:26,280 --> 00:06:27,170 poshtë në këtu. 156 00:06:27,170 --> 00:06:29,110 Sepse unë vetëm pashë se ajo punon. 157 00:06:29,110 --> 00:06:30,790 Pra, kjo është në formë mjaft të mirë. 158 00:06:30,790 --> 00:06:37,390 Dhe unë do të ndryshojë x tim për një x tim, për një, y ime për të b dhe y tim në b. 159 00:06:37,390 --> 00:06:39,130 >> Pra, me fjalë të tjera, logjika e saktë të njëjtën. 160 00:06:39,130 --> 00:06:40,850 Saktë të njëjtën gjë që bëri Jess. 161 00:06:40,850 --> 00:06:44,350 Dhe pastaj një gjë që unë duhet të bëni deri Këtu, natyrisht, tani është adhurojnë këtë 162 00:06:44,350 --> 00:06:45,990 funksioni, ose telefononi këtë funksion. 163 00:06:45,990 --> 00:06:50,430 Kështu që unë do të thërrasë këtë funksion me dy inputet, x dhe y, dhe hit Save. 164 00:06:50,430 --> 00:06:52,300 >> Të gjithë të drejtë, kështu që rrënjësisht e njëjta gjë. 165 00:06:52,300 --> 00:06:55,570 Në fakt, unë kam bërë ndoshta programin panevojshme kompleks nga 166 00:06:55,570 --> 00:07:00,820 shkruar një funksion që është vetëm duke marrë disa gjashtë rreshta të kodit, kurse unë 167 00:07:00,820 --> 00:07:02,970 më parë kishte zbatuar këtë në vetëm tre. 168 00:07:02,970 --> 00:07:06,230 >> Pra më lejoni të shkoj përpara dhe tani xhirim këtë, të bëjë asnjë shkëmbim. 169 00:07:06,230 --> 00:07:07,920 Të gjithë të drejtë, unë screwed up këtu. 170 00:07:07,920 --> 00:07:11,290 Kjo duhet të jetë një gabim që ju mund të shohim gjithnjë e më shumë si zakonisht tuaj 171 00:07:11,290 --> 00:07:12,380 Programet merrni më komplekse. 172 00:07:12,380 --> 00:07:13,470 Por ka një fix lehtë. 173 00:07:13,470 --> 00:07:15,650 Më lejoni të lëviz mbrapa deri këtu. 174 00:07:15,650 --> 00:07:18,190 >> Dhe çfarë është gabimi i parë që unë jam duke parë? 175 00:07:18,190 --> 00:07:19,520 Deklarata nënkuptuar. 176 00:07:19,520 --> 00:07:21,466 Çfarë do që zakonisht tregojnë? 177 00:07:21,466 --> 00:07:22,830 Oh, kam harruar prototip. 178 00:07:22,830 --> 00:07:26,900 Kam harruar për të mësuar përpilues që swap do të ekzistojë edhe pse ai 179 00:07:26,900 --> 00:07:28,920 nuk ekziston në fillim i programit. 180 00:07:28,920 --> 00:07:35,780 Kështu që unë jam vetëm duke shkuar për të thënë, swap pavlefshëm, int, a b int, pikëpresje. 181 00:07:35,780 --> 00:07:37,280 >> Kështu që unë nuk jam duke shkuar për reimplement atë. 182 00:07:37,280 --> 00:07:39,140 Por tani ajo përputhet çfarë është këtu poshtë. 183 00:07:39,140 --> 00:07:42,530 Dhe njoftimi, mungesa e një pikëpresje këtu, e cila nuk është e nevojshme kur 184 00:07:42,530 --> 00:07:43,200 zbatimit. 185 00:07:43,200 --> 00:07:46,010 >> Pra më lejoni të ribërë këtë, bëjë asnjë shkëmbim. 186 00:07:46,010 --> 00:07:46,910 Formë shumë të mirë. 187 00:07:46,910 --> 00:07:48,130 Run asnjë shkëmbim. 188 00:07:48,130 --> 00:07:48,740 Dhe mallkonte atë. 189 00:07:48,740 --> 00:07:51,650 Tani ne jemi kthyer aty ku ishim të hënën, ku gjë nuk bie në ujdi. 190 00:07:51,650 --> 00:07:55,410 >> Dhe çfarë është shpjegimi intuitiv se pse ky është rasti? 191 00:07:55,410 --> 00:07:56,380 Po? 192 00:07:56,380 --> 00:07:57,630 >> STUDENT: [padëgjueshme]. 193 00:07:57,630 --> 00:08:04,140 194 00:08:04,140 --> 00:08:05,230 >> DAVID Malan: Pikërisht. 195 00:08:05,230 --> 00:08:07,330 Kështu a dhe b janë kopjet e x dhe y. 196 00:08:07,330 --> 00:08:10,680 Dhe në fakt, në çdo kohë ju keni qenë duke e quajtur një funksion deri më tani që 197 00:08:10,680 --> 00:08:12,540 kalon variablave si ints - 198 00:08:12,540 --> 00:08:14,470 ashtu si swap është duke pritur këtu - 199 00:08:14,470 --> 00:08:16,270 ju djema kanë kaluar në kopje. 200 00:08:16,270 --> 00:08:19,150 >> Tani që do të thotë ajo merr një pak e kohës, një ndarje të dytë, për 201 00:08:19,150 --> 00:08:23,270 kompjuter të kopjoni copa nga një ndryshueshme në copa të një tjetër. 202 00:08:23,270 --> 00:08:24,610 Por kjo nuk është e tillë një punë e madhe. 203 00:08:24,610 --> 00:08:25,920 Por ata janë megjithatë një kopje. 204 00:08:25,920 --> 00:08:30,020 >> Dhe kështu tashmë, ne kuadrin e swap, Unë jam në të vërtetë sukses 205 00:08:30,020 --> 00:08:31,180 ndryshimi A dhe B. 206 00:08:31,180 --> 00:08:33,000 Në fakt, le të bëjë një të shpejtë kontrolloni mendje e shëndoshë. 207 00:08:33,000 --> 00:08:36,830 F Printo a eshte% i, linjë e re. 208 00:08:36,830 --> 00:08:38,770 Dhe le të plug në një. 209 00:08:38,770 --> 00:08:41,830 Tani le të bëjmë të njëjtën gjë me b. 210 00:08:41,830 --> 00:08:43,640 Dhe le të bëjë të njëjtën gjë këtu. 211 00:08:43,640 --> 00:08:47,260 >> Dhe tani, më lejoni të kopjoni ato linja të njëjta përsëri në fund të funksionit 212 00:08:47,260 --> 00:08:51,250 pas linjave të tre mia të interesante mund të ketë ekzekutuar, dhe 213 00:08:51,250 --> 00:08:53,270 printoni një b dhe përsëri. 214 00:08:53,270 --> 00:08:56,030 Pra, tani le të bëjë këtë, bëjë asnjë shkëmbim. 215 00:08:56,030 --> 00:08:58,430 Më lejoni të bëjë një dritare terminali bit shtatlartë, kështu që ne mund të shohim 216 00:08:58,430 --> 00:08:59,520 më shumë nga ajo në të njëjtën kohë. 217 00:08:59,520 --> 00:09:00,860 >> Dhe të kandidojë asnjë shkëmbim. 218 00:09:00,860 --> 00:09:04,000 x eshte 1, y eshte 2. a eshte 1, b është 2. 219 00:09:04,000 --> 00:09:06,070 Dhe pastaj, a është 2, b eshte 1. 220 00:09:06,070 --> 00:09:09,390 Pra, ajo është duke punuar, ashtu si Jess e bëri këtu në brendësi të swap-it. 221 00:09:09,390 --> 00:09:13,090 Por sigurisht, ajo që nuk ka efekt mbi ndryshoret në kryesore. 222 00:09:13,090 --> 00:09:15,360 >> Pra, ne pamë një mashtrim të cilës ne mund të rregullojmë këtë, të drejtë? 223 00:09:15,360 --> 00:09:19,560 Kur ju jeni ballafaquar me këtë Studimit , çështje që ju mund vetëm të vë bast dhe të X 224 00:09:19,560 --> 00:09:22,400 dhe y çfarë lloj variabla vend? 225 00:09:22,400 --> 00:09:23,390 >> Ju mund të bëjnë ato globale. 226 00:09:23,390 --> 00:09:27,560 Vënë ato në krye të dosjes siç bëmë, madje edhe në ndeshjen e 15. 227 00:09:27,560 --> 00:09:28,890 Ne përdorim një ndryshore globale. 228 00:09:28,890 --> 00:09:32,420 Por ne kuadrin e nje lojës 15, është e arsyeshme që të ketë një globale 229 00:09:32,420 --> 00:09:37,170 ndryshueshme në përfaqësimin e bordit, sepse 15.c është tërësia e të gjitha 230 00:09:37,170 --> 00:09:38,650 lidhje me zbatimin e se lojë. 231 00:09:38,650 --> 00:09:41,470 Kjo është ajo që ekziston për të bërë fotografi. 232 00:09:41,470 --> 00:09:44,170 >> Por në këtë rast këtu, unë jam i duke e quajtur një shkëmbim funksion. 233 00:09:44,170 --> 00:09:45,380 Unë dua të bie në ujdi dy variablave. 234 00:09:45,380 --> 00:09:48,950 Dhe kjo duhet të fillojnë të ndjehen vetëm lëngshëm nëse zgjidhja për të gjithë e tona 235 00:09:48,950 --> 00:09:51,300 probleme kur kemi drejtuar në fushën e Çështjet është të bëjë atë globale. 236 00:09:51,300 --> 00:09:54,730 Sepse shumë shpejt është programi ynë do të bëhet mjaft e një rrëmujë. 237 00:09:54,730 --> 00:09:57,760 Dhe ne e bëmë atë shumë me masë si rezultat në 15.c. 238 00:09:57,760 --> 00:10:00,470 >> Por kjo rezulton se ka një mënyrë më të mirë krejt. 239 00:10:00,470 --> 00:10:05,600 Më lejoni të vërtetë të shkuar mbrapa dhe fshini print së F, vetëm për të lehtësuar këtë kod. 240 00:10:05,600 --> 00:10:09,160 Dhe më lejoni të propozoj që kjo, me të vërtetë, është e keqe. 241 00:10:09,160 --> 00:10:15,990 Por në qoftë se unë në vend që të shtoni në disa asterisks dhe yjet, në vend të kësaj unë mund të kthehet këtë 242 00:10:15,990 --> 00:10:18,670 Funksioni në një thats në të vërtetë operacional. 243 00:10:18,670 --> 00:10:25,020 >> Pra më lejoni të kthehem këtu dhe pranoj duke thënë se asterisks është gjithmonë e vështirë, 244 00:10:25,020 --> 00:10:26,170 kështu që unë do të thonë yjet. 245 00:10:26,170 --> 00:10:27,660 Unë vetëm do të rrëfejë deri në atë një. 246 00:10:27,660 --> 00:10:28,190 Dakord. 247 00:10:28,190 --> 00:10:30,190 Dhe tani, çfarë jam unë do të bëni në vend? 248 00:10:30,190 --> 00:10:34,130 >> Pra, para së gjithash, unë jam duke shkuar për të specifikojë se në vend të kalimit në një int 249 00:10:34,130 --> 00:10:37,980 Funksioni swap, unë jam vend për të shkuar për të thënë yllin int. 250 00:10:37,980 --> 00:10:39,170 Tani, çfarë do të tregojnë yll? 251 00:10:39,170 --> 00:10:41,970 Kjo është se kuptimi i nje tregues asaj Binky, karakteri Claymation, ishte 252 00:10:41,970 --> 00:10:43,465 duke iu referuar një moment më parë. 253 00:10:43,465 --> 00:10:47,610 >> Pra, nëse ne themi yll int, kuptimi i kjo tani është se nuk do të jetë 254 00:10:47,610 --> 00:10:49,110 duke kaluar në vlerën e saj. 255 00:10:49,110 --> 00:10:50,350 Kjo nuk do të jenë të kopjohet in 256 00:10:50,350 --> 00:10:54,700 Përkundrazi, adresa e një është duke shkuar për të kaluar in 257 00:10:54,700 --> 00:10:57,840 >> Pra, kujtojnë se brenda e kompjuterit tuaj është një bandë e tërë e kujtesës, përndryshe 258 00:10:57,840 --> 00:10:58,760 i njohur si RAM. 259 00:10:58,760 --> 00:11:00,520 Dhe kjo RAM është vetëm një bandë e tërë e bytes. 260 00:11:00,520 --> 00:11:03,320 Pra, nëse tuaj Mac ose PC juaj ka Dy gigabajt, ju keni 2 261 00:11:03,320 --> 00:11:05,760 miliardi bytes e kujtesës. 262 00:11:05,760 --> 00:11:08,440 >> Tani le të vetëm të supozojmë se vetëm për të të mbajtur gjërat e bukur dhe të rregullt, ne 263 00:11:08,440 --> 00:11:09,450 të caktojë një adresë - 264 00:11:09,450 --> 00:11:10,170 një numër - 265 00:11:10,170 --> 00:11:12,270 për çdo bajt RAM në kompjuterin tuaj. 266 00:11:12,270 --> 00:11:15,410 Bajt i parë i atyre 2 miliardë është nga zero numrave. 267 00:11:15,410 --> 00:11:18,572 Një tjetër është numër një bajt, numri i dy, të gjitha mënyra më lart, dot dot 268 00:11:18,572 --> 00:11:20,530 dot, për afërsisht 2 miliard dollarë. 269 00:11:20,530 --> 00:11:23,640 >> Kështu që ju mund Numri i bytes e kujtesës në kompjuterin tuaj. 270 00:11:23,640 --> 00:11:26,460 Pra, le të supozojmë se kjo është ajo që ne do të thotë nga një adresë. 271 00:11:26,460 --> 00:11:31,360 Pra, kur unë shoh një yll të int, çfarë po ndodh për të kaluar në swap tashmë është 272 00:11:31,360 --> 00:11:32,830 adresa e një. 273 00:11:32,830 --> 00:11:37,150 Jo vlera e tij, por çdo gjë e saj postar adresa është, kështu që të flasin - 274 00:11:37,150 --> 00:11:38,810 vendndodhjen e saj në RAM. 275 00:11:38,810 --> 00:11:41,250 >> Dhe në mënyrë të ngjashme për b, unë jam duke shkuar për të thënë të njëjtën gjë. 276 00:11:41,250 --> 00:11:42,720 Int, yll, b. 277 00:11:42,720 --> 00:11:46,350 Si një mënjanë, teknikisht yllit mund të shkojnë në vende të tjera. 278 00:11:46,350 --> 00:11:50,140 Por ne do të standardizohet në yllin qenë të drejtë tjetër për llojin e të dhënave. 279 00:11:50,140 --> 00:11:54,080 >> Kështu bie në ujdi nënshkrimi tani do të thotë, më jepni adresa e një int, dhe thirrja 280 00:11:54,080 --> 00:11:55,400 se adresa a. 281 00:11:55,400 --> 00:11:58,690 Dhe jepni një adresë tjetër të një int dhe thirrje që b adresave. 282 00:11:58,690 --> 00:12:01,120 >> Por tani kodi im këtu ka për të ndryshuar. 283 00:12:01,120 --> 00:12:03,470 Sepse në qoftë se unë deklaroj temp int - 284 00:12:03,470 --> 00:12:05,580 e cila është ende e tipit int - 285 00:12:05,580 --> 00:12:08,700 por kam ruajtur atë në një, çfarë lloj të vlerës së? 286 00:12:08,700 --> 00:12:12,870 Për të qenë të qartë, unë jam vënë një një me Kodi shkruar si të drejtë tani? 287 00:12:12,870 --> 00:12:14,360 >> Unë jam vënë vendin në një. 288 00:12:14,360 --> 00:12:16,500 Por unë nuk e kujdesit në lidhje lokacioni tani, të drejtë? 289 00:12:16,500 --> 00:12:21,940 Temp ekziston vetëm kupën e tretë Jess ' ekzistuar, për çfarë qëllimi? 290 00:12:21,940 --> 00:12:23,090 Për të ruajtur një vlerë. 291 00:12:23,090 --> 00:12:24,830 Qumësht ose lëng portokalli. 292 00:12:24,830 --> 00:12:28,520 Jo në fakt të ruajtur adresën e ose nga ato gjëra, të cilat ndihet një 293 00:12:28,520 --> 00:12:31,200 pak absurd në këtë të vërtetë Konteksti botëror anyway. 294 00:12:31,200 --> 00:12:34,990 >> Pra, me të vërtetë, ajo që unë dua të vënë në temp nuk është adresa e një, por 295 00:12:34,990 --> 00:12:36,180 Përmbajtja e një. 296 00:12:36,180 --> 00:12:41,930 Pra, në qoftë se një është një numër si 123, kjo është 123 byte e kujtesës që vetëm një 297 00:12:41,930 --> 00:12:45,090 ndodh të jetë pushtuese, që vlera e ne nje ndodh të jetë i zënë. 298 00:12:45,090 --> 00:12:49,040 >> Nëse dua të shkoj në atë adresë, Unë duhet të them një yll. 299 00:12:49,040 --> 00:12:52,610 Në mënyrë të ngjashme, në qoftë se unë ishin të ndryshojë atë që është në adresën e një, unë të ndryshojë 300 00:12:52,610 --> 00:12:53,570 kjo për të filluar një. 301 00:12:53,570 --> 00:12:58,185 Nëse unë dua për të ruajtur në atë që është në një vend me atë që është në vendin e 302 00:12:58,185 --> 00:13:02,180 në b, b yll yll. 303 00:13:02,180 --> 00:13:05,340 >> Pra me pak fjalë, edhe nëse kjo nuk është mjaft në fundosje akoma - dhe unë nuk do të presim 304 00:13:05,340 --> 00:13:06,560 se ajo do të në mënyrë të shpejtë - 305 00:13:06,560 --> 00:13:11,100 kuptojnë se të gjitha unë jam duke bërë është prefixing këto yje të variablave të mi, 306 00:13:11,100 --> 00:13:13,350 thënie nuk e kap vlerat. 307 00:13:13,350 --> 00:13:14,520 Mos e ndryshoni vlerat. 308 00:13:14,520 --> 00:13:17,600 Por më tepër, shkoni tek ato adresat dhe të marrë vlerën. 309 00:13:17,600 --> 00:13:21,430 Shko në atë adresë dhe ndryshim vlera atje. 310 00:13:21,430 --> 00:13:25,500 >> Pra, tani më lejoni të lëviz mbrapa deri në majë, vetëm për të rregulluar këtë linjë këtu, për të 311 00:13:25,500 --> 00:13:27,690 ndryshojë prototip të ndeshjes. 312 00:13:27,690 --> 00:13:30,280 Por unë tani duhet të bëjë një gjë tjetër. 313 00:13:30,280 --> 00:13:35,500 Intuitivisht, në qoftë se kam ndryshuar tipet e e argumenteve që swap-i pritur, 314 00:13:35,500 --> 00:13:37,245 çfarë tjetër nuk kam nevojë për të ndryshim në kodin tim? 315 00:13:37,245 --> 00:13:39,750 316 00:13:39,750 --> 00:13:40,840 >> Kur unë e quaj shkëmbim. 317 00:13:40,840 --> 00:13:43,340 Sepse tani, çfarë jam Kam kaluar të bie në ujdi ende? 318 00:13:43,340 --> 00:13:47,450 X vlera dhe vlera e y, ose qumësht dhe lëng portokalli. 319 00:13:47,450 --> 00:13:48,510 Por unë nuk dua të bëj këtë. 320 00:13:48,510 --> 00:13:51,060 Unë në vend që doni të kalojë në atë? 321 00:13:51,060 --> 00:13:53,050 Vendndodhjen e X dhe vendndodhja e y. 322 00:13:53,050 --> 00:13:55,300 Cilat janë adresat e tyre postare, kështu që të flasin. 323 00:13:55,300 --> 00:13:57,600 >> Pra, për të bërë këtë, ka një simbol. 324 00:13:57,600 --> 00:13:59,260 Lloj simbol i tingëllon si adresë. 325 00:13:59,260 --> 00:14:03,240 kështu n, simbol, adresa e x, dhe adresa e y. 326 00:14:03,240 --> 00:14:06,790 Pra, kjo është e qëllimshme që ne përdorim ampersands Kur e quan funksionin, 327 00:14:06,790 --> 00:14:10,230 dhe yjet kur deklarimit dhe kur zbatimin e funksionit. 328 00:14:10,230 --> 00:14:14,220 >> Dhe vetëm të mendoj për simbolin komercial si adresa e operatorit, dhe si yll 329 00:14:14,220 --> 00:14:15,490 shkoni atje Operatori - 330 00:14:15,490 --> 00:14:18,640 ose, më mirë, Operatori dereference. 331 00:14:18,640 --> 00:14:23,480 Pra, kjo është një shumë e tërë e fjalëve të vetëm për të thonë se tani, me shpresë, swap po shkon 332 00:14:23,480 --> 00:14:24,440 të jenë korrekte. 333 00:14:24,440 --> 00:14:26,550 >> Më lejoni të shkojnë përpara dhe të bëjë - 334 00:14:26,550 --> 00:14:30,940 le të vërtetë të ndërrojë emrin e file, që të mos ky program nuk ka ende të quhet swap. 335 00:14:30,940 --> 00:14:33,240 Unë pretendojnë se ne do të thërrasë atë swap.c tani. 336 00:14:33,240 --> 00:14:35,670 Pra, të bëjë, të bie në ujdi. 337 00:14:35,670 --> 00:14:37,520 Dot, plagë, të bie në ujdi. 338 00:14:37,520 --> 00:14:40,210 >> Dhe tani me të vërtetë, është 1 x, y është 2. 339 00:14:40,210 --> 00:14:44,040 Dhe pastaj, x eshte 2, y është një. 340 00:14:44,040 --> 00:14:46,500 E pra, le të shohim nëse ne nuk mund të bëjmë këtë një pak më ndryshe si për atë që është 341 00:14:46,500 --> 00:14:47,180 ndodh këtu. 342 00:14:47,180 --> 00:14:51,250 Së pari, më lejoni të zoom në në tonë vizatim ekran këtu. 343 00:14:51,250 --> 00:14:54,160 Dhe më lejoni të propozojnë për një moment - dhe sa herë që kam nxjerrë këtu do të pasqyrohen 344 00:14:54,160 --> 00:14:58,660 deri atje tani - më lejoni të propozoj që këtu është një bandë e tërë e kujtesës, ose 345 00:14:58,660 --> 00:15:00,540 RAM, brenda e kompjuterit tim. 346 00:15:00,540 --> 00:15:04,140 >> Dhe kjo do të jetë numri i kafshoj, le të themi, 1. 347 00:15:04,140 --> 00:15:05,720 Kjo do të jetë bytes numër 2. 348 00:15:05,720 --> 00:15:08,220 Dhe unë do të bëj një bandë e tërë më shumë, dhe pastaj një bandë e dots dot dot për 349 00:15:08,220 --> 00:15:10,880 tregojnë se ka 2 miliard dollarë nga këto gjëra. 350 00:15:10,880 --> 00:15:13,520 4, 5, dhe kështu me radhë. 351 00:15:13,520 --> 00:15:17,055 >> Pra, nuk janë para pesë bytes e kujtesën e kompjuterit tim. 352 00:15:17,055 --> 00:15:17,560 Të gjithë të drejtë? 353 00:15:17,560 --> 00:15:19,060 Shumë pak prej 2 miliardë. 354 00:15:19,060 --> 00:15:21,120 Por tani unë jam duke shkuar për të propozojë në vijim. 355 00:15:21,120 --> 00:15:27,490 Unë jam duke shkuar për të propozojë që x është duke shkuar për të të ruajtur numrin 1, dhe y po shkon 356 00:15:27,490 --> 00:15:29,690 për të ruajtur numrin 2. 357 00:15:29,690 --> 00:15:35,000 Dhe më lejoni të shkoj përpara dhe tani përfaqëson këto vlera si më poshtë. 358 00:15:35,000 --> 00:15:41,510 >> Le ta bëjmë këtë si më poshtë. 359 00:15:41,510 --> 00:15:42,870 Më jepni vetëm një sekond. 360 00:15:42,870 --> 00:15:44,150 Një sekondë. 361 00:15:44,150 --> 00:15:45,680 OK. 362 00:15:45,680 --> 00:15:47,560 Unë dua të bërë këtë një pak - 363 00:15:47,560 --> 00:15:50,440 le të bëjë këtë përsëri. 364 00:15:50,440 --> 00:15:53,250 Përndryshe unë jam duke shkuar për të përdorur dhe Numrat e njëjta, pa dashje, 365 00:15:53,250 --> 00:15:54,230 herë të shumta. 366 00:15:54,230 --> 00:15:57,320 >> Pra, vetëm kështu që ne kemi numra të ndryshëm për të folur rreth, le ta quajmë këtë bajt 367 00:15:57,320 --> 00:16:03,391 numër 123, 124, 125, 126, dhe dot dot dot. 368 00:16:03,391 --> 00:16:08,400 Dhe më lejoni të pohojnë tani që unë jam duke shkuar për të vënë vlerën 1 këtu, dhe vlerën 2 369 00:16:08,400 --> 00:16:11,990 këtu, i njohur ndryshe si x dhe y. 370 00:16:11,990 --> 00:16:15,300 Pra, kjo ndodh pikërisht kështu që kjo është x, y kjo është. 371 00:16:15,300 --> 00:16:18,180 >> Dhe vetëm nga disa rastësisht, kompjuter, sistemit operativ, 372 00:16:18,180 --> 00:16:21,890 ndodhur për të vënë në vend të x numër 123. 373 00:16:21,890 --> 00:16:25,590 Dhe y përfundoi në lokacionin 124 - 374 00:16:25,590 --> 00:16:26,330 mallkonte atë. 375 00:16:26,330 --> 00:16:28,700 Unë duhet të ketë fiksuar këtë. 376 00:16:28,700 --> 00:16:34,040 Oh njeri, nuk kam me të vërtetë doni ta bëni këtë? 377 00:16:34,040 --> 00:16:37,340 Po, unë dua për të rregulluar këtë dhe b duhur në lidhje me këtë sot. 378 00:16:37,340 --> 00:16:39,950 Na vjen keq, reja në këtë. 379 00:16:39,950 --> 00:16:45,020 >> 127, 131, dhe unë nuk dua të jem ky komplekse, por pse nuk kam ndryshuar 380 00:16:45,020 --> 00:16:46,340 Numrat atje? 381 00:16:46,340 --> 00:16:48,360 Sepse unë dua që të ints të jetë në fakt katër bytes. 382 00:16:48,360 --> 00:16:49,810 Pra, le të jetë super anal në lidhje me këtë. 383 00:16:49,810 --> 00:16:53,800 Kështu që, nëse ndodh 1 të adresohen 123, 2 do të jetë në adresën 384 00:16:53,800 --> 00:16:55,730 127, sepse ajo është vetëm 4 byes larg. 385 00:16:55,730 --> 00:16:56,210 Kjo është e gjitha. 386 00:16:56,210 --> 00:16:58,640 Dhe ne do të harrojmë për të gjithë adresat e tjera në botë. 387 00:16:58,640 --> 00:17:03,320 >> Pra, x është në vend të 123, y është në vend të 127. 388 00:17:03,320 --> 00:17:05,770 Dhe tani çfarë po bëj unë në fakt doni të bëni? 389 00:17:05,770 --> 00:17:10,099 Kur unë e quaj swap tani, çfarë është në të vërtetë ndodh? 390 00:17:10,099 --> 00:17:14,920 E pra, kur unë e quaj shkëmbim, unë jam duke kaluar në adresa e x dhe adresa e y. 391 00:17:14,920 --> 00:17:18,540 Kështu për shembull, në qoftë se këto dy copa i letrës tani përfaqësojnë dy 392 00:17:18,540 --> 00:17:23,510 Argumentet a dhe b të bie në ujdi, çfarë jam unë do të shkruaj më parë i tyre, 393 00:17:23,510 --> 00:17:27,720 të cilën unë jam duke shkuar për të thirrur referohen si një? 394 00:17:27,720 --> 00:17:30,610 >> Pikërisht, 123. 395 00:17:30,610 --> 00:17:31,905 Kështu që kjo I pretendim eshte nje. 396 00:17:31,905 --> 00:17:32,955 Ky eshte nje parametri. 397 00:17:32,955 --> 00:17:35,856 Unë jam vënë adresën e x në atje. 398 00:17:35,856 --> 00:17:38,152 >> Çfarë është ajo? 399 00:17:38,152 --> 00:17:40,890 >> Çfarë është ajo? 400 00:17:40,890 --> 00:17:41,190 >> Jo, nuk ka. 401 00:17:41,190 --> 00:17:41,720 Kjo është në rregull. 402 00:17:41,720 --> 00:17:42,570 Ende e mirë, ende e mirë. 403 00:17:42,570 --> 00:17:43,530 Pra, kjo është një. 404 00:17:43,530 --> 00:17:46,240 Dhe tani në pjesë e dytë të letrës, kjo do të jetë b, dhe çfarë jam unë 405 00:17:46,240 --> 00:17:49,010 do të jenë të shkruar në kjo copë letër? 406 00:17:49,010 --> 00:17:50,080 127. 407 00:17:50,080 --> 00:17:53,720 >> Pra, e vetmja gjë që ka ndryshuar që tregimi ynë i mëparshëm i kësaj historie është, 408 00:17:53,720 --> 00:17:58,590 jo fjalë për fjalë 1 dhe 2, unë jam do të kalojë në numrin 123 dhe 127. 409 00:17:58,590 --> 00:18:02,130 Dhe unë tani jam duke shkuar për të vënë këto brenda i kësaj kutize, të gjithë të drejtë? 410 00:18:02,130 --> 00:18:04,640 Kështu që tani përfaqëson kuti e zezë Funksioni swap. 411 00:18:04,640 --> 00:18:07,230 >> Ndërkohë, tani le të ketë dikush zbatojë funksionin swap. 412 00:18:07,230 --> 00:18:09,090 Dikush do deri këtu të doja të vullnetare? 413 00:18:09,090 --> 00:18:09,560 Come on up. 414 00:18:09,560 --> 00:18:11,080 Cili është emri juaj? 415 00:18:11,080 --> 00:18:11,460 Charlie. 416 00:18:11,460 --> 00:18:12,080 Të gjithë të drejtë, Charlie. 417 00:18:12,080 --> 00:18:14,810 Come on up. 418 00:18:14,810 --> 00:18:17,310 >> Pra, Charlie është duke shkuar për të luajtur Roli i kutisë tonë të zi. 419 00:18:17,310 --> 00:18:21,460 Dhe Charlie, ajo që unë do të doja që ju të bëni tani është zbatuar swap në një mënyrë të tillë 420 00:18:21,460 --> 00:18:25,320 se, duke pasur parasysh këto dy adresa, ju ishin në fakt duke shkuar 421 00:18:25,320 --> 00:18:26,330 për të ndryshuar vlerat. 422 00:18:26,330 --> 00:18:28,290 Dhe unë do të pëshpëritë në veshin tuaj si për të drejtuar TV këtu. 423 00:18:28,290 --> 00:18:29,930 >> Pra shkoni përpara, dhe ju jeni kuti e zezë. 424 00:18:29,930 --> 00:18:30,920 Arrijnë në atje. 425 00:18:30,920 --> 00:18:34,054 Çfarë janë vlerat e shihni ju për një, dhe çfarë janë vlerat e shihni ju për b? 426 00:18:34,054 --> 00:18:36,740 >> CHARLIE: a është 123 dhe b është 127. 427 00:18:36,740 --> 00:18:37,530 >> DAVID Malan: OK, saktësisht. 428 00:18:37,530 --> 00:18:38,940 Tani pauzë atje për vetëm një moment. 429 00:18:38,940 --> 00:18:41,680 Gjëja e parë që ju jeni do të bëni tani, sipas kodit - cilin 430 00:18:41,680 --> 00:18:43,220 Unë tani do të tërheqë deri në ekran - 431 00:18:43,220 --> 00:18:46,750 do të jetë që të ndajë pak bit e kujtesës quajtur temp. 432 00:18:46,750 --> 00:18:48,850 Kështu që unë jam duke shkuar për të shkuar përpara dhe ju jap se kujtesës. 433 00:18:48,850 --> 00:18:52,210 >> Pra, kjo do të jetë një variabël i tretë që ju keni në dispozicion për të 434 00:18:52,210 --> 00:18:54,080 ju thirri temp. 435 00:18:54,080 --> 00:18:57,120 Dhe çfarë po ju do të shkruani në copë temp e letrës? 436 00:18:57,120 --> 00:19:02,524 437 00:19:02,524 --> 00:19:03,470 >> CHARLIE: Pointers, e drejtë? 438 00:19:03,470 --> 00:19:04,790 >> DAVID Malan: OK, edhe jo domosdoshmërisht pointers. 439 00:19:04,790 --> 00:19:07,230 Pra, linjë e kodit që unë kam theksuar në anën e djathtë, 440 00:19:07,230 --> 00:19:07,900 le të fillojë atje. 441 00:19:07,900 --> 00:19:08,890 Ajo thotë se një yll. 442 00:19:08,890 --> 00:19:11,670 Pra, a është aktualisht ruajtjen numri 123. 443 00:19:11,670 --> 00:19:16,660 Dhe vetëm intuitive, çfarë yll ka 123 do të thotë? 444 00:19:16,660 --> 00:19:21,630 >> Por, konkretisht, në qoftë se një është 123, një yll do të thotë çfarë? 445 00:19:21,630 --> 00:19:22,560 Vlera e një. 446 00:19:22,560 --> 00:19:24,580 Ose më rastësisht, të shkojnë atje. 447 00:19:24,580 --> 00:19:28,620 Pra më lejoni të propozojnë që, duke mbajtur në një dora jote, të shkojnë përpara dhe të trajtojnë se 448 00:19:28,620 --> 00:19:29,430 sikur kjo është një hartë. 449 00:19:29,430 --> 00:19:32,940 Dhe ecin mbi veten në kompjuterin e kujtesës, dhe të na gjeni atë që është e 450 00:19:32,940 --> 00:19:36,520 në vend të 123. 451 00:19:36,520 --> 00:19:37,720 Saktësisht. 452 00:19:37,720 --> 00:19:41,100 >> Pra, ne shohim në lokacionin 123 është ajo, padyshim? 453 00:19:41,100 --> 00:19:44,240 OK, kështu që çfarë tani vlera jeni duke shkuar për të vënë në temp? 454 00:19:44,240 --> 00:19:44,750 Saktësisht. 455 00:19:44,750 --> 00:19:45,600 Pra shkoni përpara dhe të bëjë atë. 456 00:19:45,600 --> 00:19:51,280 Dhe shkruaj numrin 1 në copë letër që është titulluar aktualisht temp. 457 00:19:51,280 --> 00:19:53,540 >> Dhe tani hapi tjetër që ju jeni duke shkuar për të zbatuar 458 00:19:53,540 --> 00:19:54,310 do të jetë ajo. 459 00:19:54,310 --> 00:19:57,820 E pra, në anën e djathtë të Linja tjetër e kodit është yll b. b, i 460 00:19:57,820 --> 00:19:59,260 Kursi, ruan një adresë. 461 00:19:59,260 --> 00:20:02,270 Që adreson 127. 462 00:20:02,270 --> 00:20:06,620 B Star thotë se çfarë, rastësisht duke folur? 463 00:20:06,620 --> 00:20:08,700 >> Shko në atë vend. 464 00:20:08,700 --> 00:20:14,988 Pra shkoni përpara dhe të na gjeni se çfarë është në vend të 127. 465 00:20:14,988 --> 00:20:15,480 OK. 466 00:20:15,480 --> 00:20:19,170 Sigurisht, në vend të 127, është ende vlera 2. 467 00:20:19,170 --> 00:20:24,060 Pra, çfarë po ndodh tani në dyqan çdo gjë është në vend në një? 468 00:20:24,060 --> 00:20:26,860 Pra, një yll të thotë të shkojnë në një vend. 469 00:20:26,860 --> 00:20:29,770 Çfarë është një vend? 470 00:20:29,770 --> 00:20:30,430 >> Saktësisht. 471 00:20:30,430 --> 00:20:34,190 Deri tani, në qoftë se ju doni të ndryshoni çfarë është në atë vend - 472 00:20:34,190 --> 00:20:36,470 Unë do të shkoj përpara dhe të drejtuar gomë janë këtu. 473 00:20:36,470 --> 00:20:37,760 Dhe tani e vënë atë përsëri në furçë. 474 00:20:37,760 --> 00:20:42,190 Çfarë numri jeni duke shkuar për të shkruar në atë kuti bosh tani? 475 00:20:42,190 --> 00:20:42,850 >> Saktësisht. 476 00:20:42,850 --> 00:20:46,470 Pra, kjo linjë e kodit, të jetë i qartë - le mua pauzë çfarë të bëjnë dhe Charlie 477 00:20:46,470 --> 00:20:51,730 theksoj këtu, se çfarë ai është bërë vetëm është shkruajnë në atë kutinë në lokacionin 123 478 00:20:51,730 --> 00:20:55,150 vlera që ishte më parë në b. 479 00:20:55,150 --> 00:20:59,140 Dhe kështu që ne kemi zbatuar tani në të vërtetë kjo linjë e dytë e kodit. 480 00:20:59,140 --> 00:21:01,920 >> Tani për fat të keq, nuk ka ende një linjë të mbetura. 481 00:21:01,920 --> 00:21:04,900 Tani ajo është në temp, fjalë për fjalë? 482 00:21:04,900 --> 00:21:06,200 Kjo është padyshim një numër. 483 00:21:06,200 --> 00:21:07,020 Kjo nuk është një adresë. 484 00:21:07,020 --> 00:21:09,380 Është vetëm një numër, lloj një ndryshore nga një javë. 485 00:21:09,380 --> 00:21:13,520 >> Dhe tani, kur ju thoni yll b, që do të thotë shkojnë për të b adresave, i cili eshte i 486 00:21:13,520 --> 00:21:15,090 Kursi këtu. 487 00:21:15,090 --> 00:21:16,020 Pra, një herë ju merrni atje - 488 00:21:16,020 --> 00:21:18,320 Unë do të shkoj përpara dhe fshihet se çfarë është në të vërtetë atje - dhe çka jeni 489 00:21:18,320 --> 00:21:20,820 do të shkruaj tani në 127? 490 00:21:20,820 --> 00:21:22,010 >> CHARLIE: temp, e cila është një. 491 00:21:22,010 --> 00:21:23,430 >> DAVID Malan: temp, e cila është një. 492 00:21:23,430 --> 00:21:25,670 Dhe çfarë ndodh me temp në fund? 493 00:21:25,670 --> 00:21:26,600 E pra, ne nuk të vërtetë e di. 494 00:21:26,600 --> 00:21:27,420 Ne nuk e kujdesit të vërtetë. 495 00:21:27,420 --> 00:21:31,090 Çfarëdo kohe ne kemi zbatuar një funksion deri më tani, çdo ndryshore lokale që ju keni 496 00:21:31,090 --> 00:21:31,890 janë me të vërtetë lokale. 497 00:21:31,890 --> 00:21:33,060 Dhe ata vetëm të zhduket. 498 00:21:33,060 --> 00:21:35,040 Ata janë bonifikuar nga veprojnë Sistemi përfundimisht. 499 00:21:35,040 --> 00:21:39,800 >> Pra, fakti që ende ka temp vlera 1 është lloj i rrënjësisht 500 00:21:39,800 --> 00:21:41,150 jointeresant për ne. 501 00:21:41,150 --> 00:21:43,100 Të gjithë të drejtë, kështu që një raund i duartrokitje në qoftë se ne mund të për Charlie. 502 00:21:43,100 --> 00:21:46,400 Very well done. 503 00:21:46,400 --> 00:21:51,520 >> Të gjithë të drejtë, kështu që çfarë e bën më të kjo do të thotë që ne mund të bëjmë? 504 00:21:51,520 --> 00:21:54,400 Pra, del se ne kemi qenë Tregimi i një pak gënjeshtra të bardha 505 00:21:54,400 --> 00:21:55,540 për mjaft kohë. 506 00:21:55,540 --> 00:21:59,990 Në të vërtetë, ajo rezulton se një varg, të gjithë këtë kohë, nuk është me të vërtetë një 507 00:21:59,990 --> 00:22:02,190 Sekuenca e karaktereve në vetvete. 508 00:22:02,190 --> 00:22:03,980 Kjo lloj është se intuitivisht. 509 00:22:03,980 --> 00:22:08,270 >> Por duke folur teknikisht, string është një Lloji i të dhënave që kemi deklaruar në brendësi të 510 00:22:08,270 --> 00:22:12,170 CS50 bibliotekë të thjeshtojë botën për javët e para të klasës. 511 00:22:12,170 --> 00:22:20,130 Çfarë është me të vërtetë një varg është adresa e nje karakter diku në RAM. 512 00:22:20,130 --> 00:22:25,530 Një varg është me të vërtetë një numër, si 123 ose 127, që ndodh për të caktoj kufijtë 513 00:22:25,530 --> 00:22:28,420 ku një varg fillon në memorie kompjuteri juaj. 514 00:22:28,420 --> 00:22:31,870 >> Por kjo nuk paraqet string, në vetvete, në vetvete. 515 00:22:31,870 --> 00:22:33,460 Dhe ne mund të shohim këtë si më poshtë. 516 00:22:33,460 --> 00:22:35,980 Më lejoni të shkojnë përpara dhe të hapur disa kodin që është në mesin e 517 00:22:35,980 --> 00:22:38,340 kodi burim sotme shembuj. 518 00:22:38,340 --> 00:22:42,225 Dhe unë jam duke shkuar për të shkuar përpara dhe të hapur lart, le të themi, krahasuar-0.c. 519 00:22:42,225 --> 00:22:44,830 520 00:22:44,830 --> 00:22:48,790 Ky është një program që do buggy për të realizuar si më poshtë. 521 00:22:48,790 --> 00:22:49,040 >> Së pari. 522 00:22:49,040 --> 00:22:50,420 Unë jam duke shkuar për të thënë diçka. 523 00:22:50,420 --> 00:22:52,660 Atëherë unë jam duke shkuar për të shkuar përpara dhe të marrë një varg nga përdoruesi 524 00:22:52,660 --> 00:22:53,750 në atë linjë të ardhshëm. 525 00:22:53,750 --> 00:22:55,370 Atëherë unë jam duke shkuar për të thonë se ai përsëri. 526 00:22:55,370 --> 00:22:57,540 Atëherë unë jam duke shkuar për të marrë një tjetër string nga përdoruesi. 527 00:22:57,540 --> 00:23:00,390 >> Dhe vini re, unë jam duke treguar një vargjet në një ndryshore të quajtur s, dhe 528 00:23:00,390 --> 00:23:03,040 një tjetër i këtyre frazave në një ndryshore të quajtur t. 529 00:23:03,040 --> 00:23:07,480 Dhe tani unë jam duke shkuar për të kërkuar, shumë arsyeshme, se në qoftë se s barabartë barabartë me t, 530 00:23:07,480 --> 00:23:08,940 vargjet janë të njëjta. 531 00:23:08,940 --> 00:23:09,970 Ju shtypni të njëjtën gjë. 532 00:23:09,970 --> 00:23:11,830 Tjetër, vargjet janë të nuk e njëjta gjë. 533 00:23:11,830 --> 00:23:15,440 >> Pas të gjitha, në qoftë se ne dy input ints, dy chars, dy gjithandej, dy dyshe, çdo i 534 00:23:15,440 --> 00:23:18,400 llojet e të dhënave që kemi biseduar rreth deri më tani për të krahasuar ato - 535 00:23:18,400 --> 00:23:22,070 kujtoj kemi bërë shumë të qartë një kohë më parë se ju nuk e bëni këtë, sepse një 536 00:23:22,070 --> 00:23:25,840 shenjë e vetme është e barabartë natyrisht operatori detyrë. 537 00:23:25,840 --> 00:23:26,820 Kështu që do të jetë një bug. 538 00:23:26,820 --> 00:23:29,260 >> Ne përdorim shenjën barabartë të barabartë, të cilat vërtet krahason 539 00:23:29,260 --> 00:23:31,050 gjëra për barazinë e vërtetë. 540 00:23:31,050 --> 00:23:32,275 Por unë pretendojnë se kjo është buggy. 541 00:23:32,275 --> 00:23:37,400 Nëse unë shkoj përpara dhe të bëjë krahasimin zero, dhe pastaj të bëjë dot slash krahasoni zero. 542 00:23:37,400 --> 00:23:39,700 Dhe unë lloji në, le të themi, përshëndetje. 543 00:23:39,700 --> 00:23:41,590 Dhe pastaj le të thonë hello përsëri. 544 00:23:41,590 --> 00:23:46,040 Fjalë për fjalë të njëjtën gjë, kompjuter pretendimet I shtypur gjëra të ndryshme. 545 00:23:46,040 --> 00:23:47,640 >> Tani ndoshta unë vetëm diçka të gabuar. 546 00:23:47,640 --> 00:23:49,910 Unë do të shkruash emrin tim këtë kohë. 547 00:23:49,910 --> 00:23:52,580 Unë do të thotë, përshëndetje. 548 00:23:52,580 --> 00:23:54,770 Hello. 549 00:23:54,770 --> 00:23:57,360 Është e ndryshme çdo herë të vetme. 550 00:23:57,360 --> 00:23:58,430 >> E pra, pse është kjo? 551 00:23:58,430 --> 00:24:00,140 Çfarë ndodh në të vërtetë nën kapuç? 552 00:24:00,140 --> 00:24:03,270 E pra, çfarë ndodh në të vërtetë nën individualitet është string pastaj 553 00:24:03,270 --> 00:24:07,410 I shtypur në atë kohë parë, për shembull është fjala hello, natyrisht. 554 00:24:07,410 --> 00:24:11,660 Por nëse ne përfaqësojmë këtë nën individualitet, kujtojmë se një 555 00:24:11,660 --> 00:24:13,470 varg eshte ne nje rrjet. 556 00:24:13,470 --> 00:24:15,040 Dhe e kemi thënë sa më shumë në të kaluarën. 557 00:24:15,040 --> 00:24:20,200 >> Pra, nëse unë tërheqë atë grup si ky, unë jam duke shkuar për të përfaqësuar diçka mjaft 558 00:24:20,200 --> 00:24:23,030 ngjashme me atë që ne e bëmë një moment më parë. 559 00:24:23,030 --> 00:24:25,390 Dhe nuk ka diçka të vërtetë të veçantë këtu, too. 560 00:24:25,390 --> 00:24:28,090 Çfarë u kemi përcaktuar në fundi i çdo varg? 561 00:24:28,090 --> 00:24:30,760 Po, kjo zero backslash, e cila eshte vetëm mënyra e përfaqësimit, 562 00:24:30,760 --> 00:24:33,610 fjalë për fjalë, 00000000. 563 00:24:33,610 --> 00:24:35,680 0 Tetë BITS në një rresht. 564 00:24:35,680 --> 00:24:37,610 >> Unë nuk e di, sinqerisht, çfarë është pas kësaj. 565 00:24:37,610 --> 00:24:40,090 Kjo është vetëm një bandë RAM më shumë brenda e kompjuterit tim. 566 00:24:40,090 --> 00:24:40,970 Por kjo është një koleksion. 567 00:24:40,970 --> 00:24:42,260 Ne folëm rreth vargjeve të para. 568 00:24:42,260 --> 00:24:45,010 Dhe ne zakonisht flasim rreth vargjeve si vendndodhja zero, 569 00:24:45,010 --> 00:24:46,580 pastaj një, pastaj dy. 570 00:24:46,580 --> 00:24:47,950 Por kjo është vetëm për lehtësi. 571 00:24:47,950 --> 00:24:49,380 Dhe kjo është krejtësisht relative. 572 00:24:49,380 --> 00:24:53,010 >> Kur ju jeni në të vërtetë duke marrë kujtesës nga kompjuteri, kjo është sigurisht çdo 573 00:24:53,010 --> 00:24:55,450 2 miliard disa bytes rastësishëm, potencialisht. 574 00:24:55,450 --> 00:24:59,100 Pra, me të vërtetë nën kapuç, të gjithë këtë kohë, po. 575 00:24:59,100 --> 00:25:01,670 Kjo mund të jetë shumë mirë zero kllapa. 576 00:25:01,670 --> 00:25:04,780 Por në qoftë se ju gërmoj edhe më thellë nën kapuç, se me të vërtetë 577 00:25:04,780 --> 00:25:07,000 adresuar numrin 123. 578 00:25:07,000 --> 00:25:09,150 Kjo është adresa 124. 579 00:25:09,150 --> 00:25:11,040 Kjo është adresa 125. 580 00:25:11,040 --> 00:25:12,540 >> Dhe unë nuk e vidhos deri në këtë kohë. 581 00:25:12,540 --> 00:25:15,840 Këto janë tani një byte përveç për çfarë arsye? 582 00:25:15,840 --> 00:25:17,930 Sa i madh është një char? 583 00:25:17,930 --> 00:25:19,170 Një char është vetëm një bajt. 584 00:25:19,170 --> 00:25:20,570 Një int zakonisht është katër bytes. 585 00:25:20,570 --> 00:25:24,850 Pra, kjo është arsyeja pse unë e bëri atë 123, 127, 131 dhe kështu me radhë. 586 00:25:24,850 --> 00:25:27,560 Tani unë mund të mbani matematikë të thjeshtë dhe vetëm të bëjë plus 1. 587 00:25:27,560 --> 00:25:30,510 Dhe tani kjo është ajo që është me të vërtetë ndodh në nën kapuç. 588 00:25:30,510 --> 00:25:37,760 >> Pra, kur ju të deklarojë diçka si kjo, string s, kjo është në fakt - 589 00:25:37,760 --> 00:25:39,170 ajo rezulton jashtë - 590 00:25:39,170 --> 00:25:41,190 yll char. 591 00:25:41,190 --> 00:25:44,640 Star, natyrisht, do të thotë adresa, akrep aka. 592 00:25:44,640 --> 00:25:46,200 Pra, kjo është adresa e diçkaje. 593 00:25:46,200 --> 00:25:47,510 Çfarë është ajo adresa e? 594 00:25:47,510 --> 00:25:47,760 >> Well - 595 00:25:47,760 --> 00:25:51,680 Unë jam i vetmi që mund të shihni shumë Pika e rëndësishme që unë jam duke bërë, ose mendojnë 596 00:25:51,680 --> 00:25:52,560 Unë jam duke e bërë. 597 00:25:52,560 --> 00:25:55,270 Pra string - 598 00:25:55,270 --> 00:25:57,180 Gjëja e trishtuar është që unë kam një monitor ka të drejtë ku unë 599 00:25:57,180 --> 00:25:58,100 mund të ketë parë se. 600 00:25:58,100 --> 00:26:00,990 >> Të gjithë të drejtë, kështu që string s është ajo Kam deklaruar më parë. 601 00:26:00,990 --> 00:26:04,600 Por kjo rezulton, në sajë të një pak magji në bibliotekë CS50, e gjithë kjo 602 00:26:04,600 --> 00:26:08,780 string koha ka fjalë për fjalë qenë yll char. 603 00:26:08,780 --> 00:26:11,310 Yll përsëri do të thotë akrep ose adresa. 604 00:26:11,310 --> 00:26:14,180 Fakti që ajo është flanking Fjala char do të thotë se është 605 00:26:14,180 --> 00:26:15,970 adresa e një karakteri. 606 00:26:15,970 --> 00:26:23,100 >> Pra, nëse merrni string thirret, dhe unë lloji në H-E-L-L-O, të propozojë tani ajo ka marrë 607 00:26:23,100 --> 00:26:27,330 string qenë fjalë për fjalë kthimit të të gjithë këtë herë, edhe pse ne kemi më tepër 608 00:26:27,330 --> 00:26:29,980 thjeshtëzuar botën? 609 00:26:29,980 --> 00:26:33,310 Çfarë ka marrë string në të vërtetë kthehet si vlera e saj e kthimit? 610 00:26:33,310 --> 00:26:35,830 611 00:26:35,830 --> 00:26:38,720 >> 123 në këtë rast, për shembull. 612 00:26:38,720 --> 00:26:42,630 Ne kemi thënë më parë se të marrë string kthehet thjesht një varg, një sekuencë e 613 00:26:42,630 --> 00:26:43,300 karaktere. 614 00:26:43,300 --> 00:26:44,790 Por kjo është pak e një gënjeshtër të bardhë. 615 00:26:44,790 --> 00:26:48,010 Mënyra të marrë string vërtetë punon nën kapuç është ajo merr një 616 00:26:48,010 --> 00:26:48,930 string nga përdoruesi. 617 00:26:48,930 --> 00:26:51,530 Ajo plops karaktere që ai ose ajo lloje në kujtesë. 618 00:26:51,530 --> 00:26:54,680 Ajo vë një zero backslash në fund e atyre sekuencë të karaktereve. 619 00:26:54,680 --> 00:26:57,310 >> Por atëherë çfarë ka marrë string fjalë për fjalë të kthehen? 620 00:26:57,310 --> 00:27:02,710 Është fjalë për fjalë e kthen adresën e bytes më shumë para në RAM që 621 00:27:02,710 --> 00:27:04,130 ajo përdoret për atë forcë. 622 00:27:04,130 --> 00:27:07,500 Dhe kjo rezulton se vetëm duke u kthyer një adresë e vetme e 623 00:27:07,500 --> 00:27:12,120 karakter i parë në varg, që është të mjaftueshme për të gjetur tërësinë e 624 00:27:12,120 --> 00:27:12,630 string. 625 00:27:12,630 --> 00:27:16,930 >> Me fjalë të tjera, marrë string nuk kanë për t'u kthyer 123 dhe 124 dhe 125. 626 00:27:16,930 --> 00:27:19,950 Ajo nuk duhet të jepni një kohë të gjatë listë e të gjitha bytes që 627 00:27:19,950 --> 00:27:20,740 string ime është duke përdorur. 628 00:27:20,740 --> 00:27:22,670 Për shkak se një, ata janë të gjithë të kthehet prapa. 629 00:27:22,670 --> 00:27:28,160 Dhe dy, bazuar në adresën e parë, unë mund të kuptoj se ku përfundon string. 630 00:27:28,160 --> 00:27:29,910 Si? 631 00:27:29,910 --> 00:27:33,490 >> Karakter të veçantë null, backslash zero në fund. 632 00:27:33,490 --> 00:27:35,430 Pra, me fjalë të tjera, në qoftë se ju të kalojë përreth - 633 00:27:35,430 --> 00:27:36,530 brenda variablave - 634 00:27:36,530 --> 00:27:41,300 adresa e një char, dhe ju supozojmë që në fund të çdo varg, çdo 635 00:27:41,300 --> 00:27:45,040 Sekuenca e karaktereve si ne njerëzit të mendojnë për vargjet, nëse ju supozojmë se 636 00:27:45,040 --> 00:27:48,600 në fund të çdo varg të tillë nuk e një zero backslash, ju jeni të artë. 637 00:27:48,600 --> 00:27:52,430 Sepse ju gjithmonë mund të gjeni fundi i nje varg. 638 00:27:52,430 --> 00:27:54,870 >> Tani çfarë po ndodh me të vërtetë, atëherë në këtë program? 639 00:27:54,870 --> 00:27:59,990 Pse është ky program, krahasoni-0.c, buggy? 640 00:27:59,990 --> 00:28:01,690 Çfarë është në të vërtetë duke u krahasuar? 641 00:28:01,690 --> 00:28:02,420 Po? 642 00:28:02,420 --> 00:28:05,000 >> STUDENT: [padëgjueshme]. 643 00:28:05,000 --> 00:28:05,730 >> DAVID Malan: Pikërisht. 644 00:28:05,730 --> 00:28:08,350 Ajo është krahasuar vendndodhjet nga vargjet. 645 00:28:08,350 --> 00:28:12,420 Pra, nëse përdoruesi ka shtypur në përshëndetje herë, si unë e bëri, kujtesës mund të përfundojnë 646 00:28:12,420 --> 00:28:13,430 në kërkim si kjo. 647 00:28:13,430 --> 00:28:18,210 Nëse përdoruesi pastaj në lloje Përshëndetje përsëri, por duke telefonuar merrni varg sërish, c është 648 00:28:18,210 --> 00:28:21,800 nuk është veçanërisht i zgjuar nëse ju mësoni që ajo të jetë i zgjuar duke shkruar kodin. 649 00:28:21,800 --> 00:28:22,430 >> C - 650 00:28:22,430 --> 00:28:23,860 kompjutera dhe më në përgjithësi - 651 00:28:23,860 --> 00:28:27,370 në qoftë se ju shkruani në fjalën Përshëndetje përsëri, ju e dini se çfarë ju jeni do të merrni. 652 00:28:27,370 --> 00:28:31,480 Ju jeni vetëm do të merrni një rrjet të dytë e kujtesës që, po, ndodh të jetë 653 00:28:31,480 --> 00:28:35,510 ruajtjen H-E-L-L-O dhe kështu me radhë. 654 00:28:35,510 --> 00:28:38,240 >> Ajo do të shikojmë të njëjtën gjë na njerëzit, por kjo adresë 655 00:28:38,240 --> 00:28:39,460 nuk mund të jetë 123. 656 00:28:39,460 --> 00:28:42,470 Kjo mund të ndodhë vetëm në mënyrë që sistem operativ ka disa në dispozicion 657 00:28:42,470 --> 00:28:45,430 hapësirë ​​për shembull në vend - 658 00:28:45,430 --> 00:28:49,820 le të themi diçka arbitrar, si ky vend është 200. 659 00:28:49,820 --> 00:28:51,620 Dhe kjo është vendndodhja 201. 660 00:28:51,620 --> 00:28:53,060 Dhe kjo është vendndodhja 202. 661 00:28:53,060 --> 00:28:55,730 Ne nuk kemi asnjë ide se ku thats do të jetë në kujtesën. 662 00:28:55,730 --> 00:28:59,110 >> Por çfarë do të thotë kjo është se çfarë është do të ruhen në fund të fundit në s? 663 00:28:59,110 --> 00:29:00,750 Numri 123. 664 00:29:00,750 --> 00:29:04,860 Çfarë do të ruhen në t, në këtë shembull arbitrare? 665 00:29:04,860 --> 00:29:06,300 Numri 200. 666 00:29:06,300 --> 00:29:11,410 Dhe të gjithë që do të thotë, atëherë është e qartë, 123 nuk bën të barabartë 200. 667 00:29:11,410 --> 00:29:14,940 Dhe kështu kjo nëse kurrë kusht evaluohet në true. 668 00:29:14,940 --> 00:29:18,430 Sepse string merrni është duke përdorur të ndryshme chunks e kujtesës çdo kohë. 669 00:29:18,430 --> 00:29:20,360 >> Tani ne mund të shohim këtë përsëri Në një shembull tjetër. 670 00:29:20,360 --> 00:29:23,764 Më lejoni të shkojnë përpara dhe të hapur-up kopje 0.c. 671 00:29:23,764 --> 00:29:28,770 Unë pohojnë se ky shembull do të provoni - por dështojnë - ta kopjoni dy vargjet 672 00:29:28,770 --> 00:29:29,910 si më poshtë. 673 00:29:29,910 --> 00:29:31,730 >> Unë jam duke shkuar për të thënë diçka te te perdoruesit. 674 00:29:31,730 --> 00:29:34,490 Atëherë unë jam duke shkuar për të marrë një string dhe e quajti atë s. 675 00:29:34,490 --> 00:29:36,400 Dhe tani, unë jam duke bërë këtë kontroll këtu. 676 00:29:36,400 --> 00:29:37,990 Ne kemi përmendur këtë përsëri një kohë. 677 00:29:37,990 --> 00:29:42,490 Por kur mund të merrni të kthimit null string, një tjetër karakter të veçantë, ose të veçanta 678 00:29:42,490 --> 00:29:45,050 Simboli le të themi. 679 00:29:45,050 --> 00:29:45,900 Nëse kjo është jashtë kujtesës. 680 00:29:45,900 --> 00:29:48,970 >> Për shembull, në qoftë se përdoruesi është me të vërtetë qenë e vështirë dhe llojet një mizor 681 00:29:48,970 --> 00:29:51,220 Numri i karaktereve në tastierë dhe hitet Enter. 682 00:29:51,220 --> 00:29:54,580 Në qoftë se numri i karaktereve thjesht nuk mund të përshtaten në RAM për çfarëdo çmendur 683 00:29:54,580 --> 00:29:57,820 arsye, mund të merrni edhe string shumë mirë të kthehen null. 684 00:29:57,820 --> 00:30:01,080 >> Ose në qoftë se programi juaj në vetvete është bërë shumë gjëra të tjera dhe nuk është vetëm 685 00:30:01,080 --> 00:30:03,790 nuk është kujtesë të mjaftueshme për të marrë string të ketë sukses, Ajo mund të përfundojë 686 00:30:03,790 --> 00:30:05,240 up kthyer null. 687 00:30:05,240 --> 00:30:07,160 Por le të jenë më të saktë si për të çfarë është kjo. 688 00:30:07,160 --> 00:30:10,280 Cili është lloji dhënat e S me të vërtetë? 689 00:30:10,280 --> 00:30:11,610 Yll Char. 690 00:30:11,610 --> 00:30:14,560 >> Pra, del tani ne mund të zhvishem mbështesë shtresën e null. 691 00:30:14,560 --> 00:30:17,500 Rezulton, null është - po, natyrisht një simbol të veçantë. 692 00:30:17,500 --> 00:30:19,190 Por çfarë është ajo me të vërtetë? 693 00:30:19,190 --> 00:30:25,220 Really, null është vetëm një simbol që ne njerëzit përdorin për të përfaqësuar zero si. 694 00:30:25,220 --> 00:30:29,010 >> Pra, autorët e C, dhe kompjutera më në përgjithësi, vendosi vjet më parë 695 00:30:29,010 --> 00:30:30,010 se, ju e dini se çfarë. 696 00:30:30,010 --> 00:30:34,850 Pse nuk kemi siguruar që asnjë përdorues dhënave është kurrë, kurrë, kurrë 697 00:30:34,850 --> 00:30:36,730 ruhen në zero mirupafshim? 698 00:30:36,730 --> 00:30:39,610 Në fakt, edhe në shembullin tim arbitrare para, unë nuk ka filluar që numëron 699 00:30:39,610 --> 00:30:40,390 bytes zero. 700 00:30:40,390 --> 00:30:41,540 Unë fillova në një. 701 00:30:41,540 --> 00:30:44,950 Sepse e dija që njerëzit në botë kanë vendosur që të rezervoj zero 702 00:30:44,950 --> 00:30:47,970 bajt në RAM askujt si diçka e veçantë. 703 00:30:47,970 --> 00:30:52,020 >> Arsye që, në çdo kohë që ju doni të sinjal se diçka ka shkuar keq 704 00:30:52,020 --> 00:30:55,960 në lidhje me adresat, ju kthye null - i njohur ndryshe si zero - 705 00:30:55,960 --> 00:30:59,410 dhe për shkak se ju e dini se nuk ka asnjë legit të dhëna në adresën zero, në mënyrë të qartë 706 00:30:59,410 --> 00:31:00,400 që do të thotë një gabim. 707 00:31:00,400 --> 00:31:04,080 Dhe kjo është arsyeja pse ne, nga Konventa, kontrolloni for null diçka dhe kthimi 708 00:31:04,080 --> 00:31:06,260 si një në ato raste. 709 00:31:06,260 --> 00:31:09,300 >> Pra, nëse ne lëvizni poshtë për tani, kjo është vetëm pastaj disa kontrolluar gabim, vetëm në rast 710 00:31:09,300 --> 00:31:10,610 diçka shkoi keq me [? dorëzani?] 711 00:31:10,610 --> 00:31:13,470 krejt dhe mbaro programin duke u kthyer në fillim. 712 00:31:13,470 --> 00:31:19,030 Kjo linjë tani mund të rishkruhet si kjo, që do të thotë çfarë? 713 00:31:19,030 --> 00:31:23,155 Në anën e majtë, jepni një tjetër tregues për një karakter, dhe e quajti atë t. 714 00:31:23,155 --> 00:31:26,935 Çfarë jam unë ruajtjen brenda t, bazuar në këtë vijë një e kodit? 715 00:31:26,935 --> 00:31:30,950 716 00:31:30,950 --> 00:31:32,170 >> Unë jam magazinimin një vend. 717 00:31:32,170 --> 00:31:34,742 Konkretisht vend që ishte në s. 718 00:31:34,742 --> 00:31:39,000 Pra, nëse përdoruesi ka shtypur në hello, dhe që së pari përshëndetje ndodh të përfundojnë 719 00:31:39,000 --> 00:31:42,567 këtu, atëherë numri është 123 do të kthehen nga marrë 720 00:31:42,567 --> 00:31:43,810 string dhe të ruhen - 721 00:31:43,810 --> 00:31:44,780 siç kemi thënë më parë - 722 00:31:44,780 --> 00:31:45,440 në s. 723 00:31:45,440 --> 00:31:50,560 >> Kur unë deklaroj tani një tjetër tregues për një t char dhe e quajti atë, se çfarë numri është 724 00:31:50,560 --> 00:31:53,940 fjalë për fjalë do të përfundojë deri në T sipas tregimit? 725 00:31:53,940 --> 00:31:55,420 Pra, 123. 726 00:31:55,420 --> 00:32:00,310 >> Pra, teknikisht dhe tani të dy s t janë treguar të saktë 727 00:32:00,310 --> 00:32:02,410 chunks e njëjta të kujtesës. 728 00:32:02,410 --> 00:32:06,140 Pra, njoftim se çfarë unë jam duke shkuar për të bëni tani për të të provojë se ky program është buggy. 729 00:32:06,140 --> 00:32:08,820 >> Së pari unë jam duke shkuar për të kërkuar, me një f shtypura, kapitalizimin 730 00:32:08,820 --> 00:32:10,080 kopje të vargut. 731 00:32:10,080 --> 00:32:11,660 Atëherë unë jam duke shkuar për të bërë një pak Error checking. 732 00:32:11,660 --> 00:32:12,160 Unë jam duke shkuar për të bërë të sigurt. 733 00:32:12,160 --> 00:32:16,710 Le të sigurohemi që t string është në pak më i madh se zero në gjatësi, 734 00:32:16,710 --> 00:32:19,190 kështu që ka disa karakter atje që në fakt germa. 735 00:32:19,190 --> 00:32:22,840 >> Dhe pastaj ju mund të kujtojnë këtë nga shembujt e mëparshëm. 736 00:32:22,840 --> 00:32:25,630 2 sipërme - cila eshte ne fotografi ctype.h. 737 00:32:25,630 --> 00:32:30,800 T kllapa jep mua zero zero Karakteri i t string. 738 00:32:30,800 --> 00:32:34,360 Dhe 2 sipërme të atij të njëjtën vlerë, e Sigurisht, ajo konverton të uppercase. 739 00:32:34,360 --> 00:32:38,230 >> Pra intuitive, kjo theksuar linjë e kodit është kapitalizuar parë 740 00:32:38,230 --> 00:32:40,250 letër në t. 741 00:32:40,250 --> 00:32:44,485 Por kjo nuk është kapitalizuar, intuitive, shkronja e parë në s. 742 00:32:44,485 --> 00:32:48,130 Por nëse ju jeni duke menduar përpara, çfarë jam unë gati për të parë kur kam drejtuar këtë program 743 00:32:48,130 --> 00:32:54,220 dhe të shtypura nga të dy origjinale, S, dhe ashtuquajturi kopje, T? 744 00:32:54,220 --> 00:32:55,350 >> Ata janë në të vërtetë do të jetë i njëjtë. 745 00:32:55,350 --> 00:32:56,600 Dhe pse janë ata do të jenë të njëjta? 746 00:32:56,600 --> 00:32:58,970 747 00:32:58,970 --> 00:33:01,020 Ata janë të dy duke treguar për saktësisht e njëjta gjë. 748 00:33:01,020 --> 00:33:01,610 Pra, le ta bëjmë këtë. 749 00:33:01,610 --> 00:33:03,160 >> Bëni kopje zero. 750 00:33:03,160 --> 00:33:04,070 Ai përpilon OK. 751 00:33:04,070 --> 00:33:06,500 Më lejoni të kandidojë zero kopje. 752 00:33:06,500 --> 00:33:10,110 Më lejoni të shkruani diçka si përshëndetje në të gjitha vogle pastaj goditi Enter. 753 00:33:10,110 --> 00:33:16,520 Dhe ajo pretendon se të dy s origjinale dhe me të vërtetë janë kopje identike. 754 00:33:16,520 --> 00:33:17,920 >> Pra, çfarë ndodhi me të vërtetë këtu? 755 00:33:17,920 --> 00:33:20,100 Më lejoni shlyen këtë foto vetëm për të treguar historinë në një 756 00:33:20,100 --> 00:33:21,340 mënyrë paksa të ndryshme. 757 00:33:21,340 --> 00:33:26,060 Çfarë ndodh në të vërtetë nën individualitet kur unë deklaroj diçka si 758 00:33:26,060 --> 00:33:30,410 nisje s, apo string s, Unë jam duke marrë një pointer - 759 00:33:30,410 --> 00:33:33,090 i cili ndodh të jetë katër bytes në aplikim CS50 760 00:33:33,090 --> 00:33:34,410 dhe në një shumë prej kompjuter. 761 00:33:34,410 --> 00:33:36,008 Dhe unë jam duke shkuar për të thirrur këtë s. 762 00:33:36,008 --> 00:33:39,810 Dhe kjo ka aktualisht disa vlera panjohur. 763 00:33:39,810 --> 00:33:43,900 >> Kur ju të deklarojë një ndryshore, nëse ju veten të vënë një vlerë atje, i cili 764 00:33:43,900 --> 00:33:44,570 e di se çfarë është atje. 765 00:33:44,570 --> 00:33:48,110 Kjo mund të jetë disa sekuenca të rastit të bit nga ekzekutimi mëparshëm. 766 00:33:48,110 --> 00:33:52,490 Pra kur unë, në linjën time të kodit do të merrni string, dhe pastaj dyqan kthimin 767 00:33:52,490 --> 00:33:54,800 Vlera në s merrni varg disi - 768 00:33:54,800 --> 00:33:58,520 dhe ne përfundimisht do të zhvishem mbrapa se si të merrni Punimet varg, disi alokon një 769 00:33:58,520 --> 00:34:00,480 array që ndoshta duket pak si kjo. 770 00:34:00,480 --> 00:34:05,390 H-E-L-L-O, backslash zero. 771 00:34:05,390 --> 00:34:09,510 >> Le të supozojmë se kjo është adresa 123 vetëm qëndrueshmëri të parë. 772 00:34:09,510 --> 00:34:13,000 Pra, të marrë të kthimit string, në theksuar linjë atje, ajo kthehet 773 00:34:13,000 --> 00:34:15,000 Numri i thamë, 123. 774 00:34:15,000 --> 00:34:17,420 Pra, çfarë me të vërtetë shkon brenda s këtu? 775 00:34:17,420 --> 00:34:26,590 >> E pra, çfarë me të vërtetë shkon brenda S eshte 123. 776 00:34:26,590 --> 00:34:29,250 Por, sinqerisht, unë jam duke marrë një pak hutuar nga të gjithë këto adresa, 777 00:34:29,250 --> 00:34:30,320 të gjithë këtyre numrave arbitrare. 778 00:34:30,320 --> 00:34:32,290 123, 124, 127. 779 00:34:32,290 --> 00:34:34,570 Pra, le të vërtetë të thjeshtojë botën një pak. 780 00:34:34,570 --> 00:34:38,800 >> Kur ne flasim për pointers, sinqerisht, për të ne njerëzit, i cili dreq kujdeset ku 781 00:34:38,800 --> 00:34:39,870 gjërat janë në kujtesën? 782 00:34:39,870 --> 00:34:41,080 Kjo është krejtësisht arbitrare. 783 00:34:41,080 --> 00:34:43,370 Ajo do të varet nga sa sa RAM përdorues ka. 784 00:34:43,370 --> 00:34:46,590 Ajo do të varet kur në ditën e ju drejtuar programin, ndoshta, dhe 785 00:34:46,590 --> 00:34:48,250 çfarë input përdorues ju jep. 786 00:34:48,250 --> 00:34:50,060 Jemi ndalur në detaje të parëndësishme. 787 00:34:50,060 --> 00:34:54,230 >> Pra abstrakte le larg dhe thonë se, kur ju drejtuar një linjë e kodit si kjo, 788 00:34:54,230 --> 00:34:57,320 char yll s merr kthimin Vlera e vargut të merrni. 789 00:34:57,320 --> 00:35:02,720 Pse nuk kemi vend vetëm barazim ajo që ne mbani duke e quajtur si një tregues pse kjo është 790 00:35:02,720 --> 00:35:04,140 duke vënë në diçka? 791 00:35:04,140 --> 00:35:07,000 Kështu që unë tani që pretendojnë s up nuk eshte nje kursori - 792 00:35:07,000 --> 00:35:08,480 nën kapuç është një adresë. 793 00:35:08,480 --> 00:35:11,330 Por kjo është vetëm për të treguar bajt parë në 794 00:35:11,330 --> 00:35:12,780 string që është kthyer. 795 00:35:12,780 --> 00:35:16,710 >> Nëse unë tani kthehet në kodin këtu, çfarë po ndodh në këtë linjë? 796 00:35:16,710 --> 00:35:20,020 E pra, në këtë linjë theksuar tani, Unë jam deklaruar me sa duket një tjetër 797 00:35:20,020 --> 00:35:21,070 ndryshore të quajtur T. 798 00:35:21,070 --> 00:35:25,700 Por kjo është gjithashtu një tregues, kështu që unë jam duke shkuar për të nxjerrë atë si, në teori, e saktë 799 00:35:25,700 --> 00:35:26,710 kuti të njëjtën madhësi. 800 00:35:26,710 --> 00:35:28,160 Dhe unë jam duke shkuar për të thirrur atë t. 801 00:35:28,160 --> 00:35:33,500 >> Dhe tani, nëse ne do të shkojmë përsëri në kodin përsëri, kur kam ruajtur brenda s t, 802 00:35:33,500 --> 00:35:36,920 Çfarë jam unë teknikisht vënë brenda t? 803 00:35:36,920 --> 00:35:39,350 E pra teknikisht, kjo ishte numri 123. 804 00:35:39,350 --> 00:35:42,270 Kështu që unë me të vërtetë duhet të jetë me shkrim 123 numri atje. 805 00:35:42,270 --> 00:35:43,900 Por le të marrë atë nivel më të lartë. 806 00:35:43,900 --> 00:35:48,090 t, në qoftë se ajo është vetëm një akrep, intuitivisht, është vetëm se. 807 00:35:48,090 --> 00:35:49,800 Kjo është e gjitha kjo është të jesh ruhen në atje. 808 00:35:49,800 --> 00:35:54,970 >> Deri tani në linjat e fundit interesante e kodit, kur unë në fakt të shkuar në lidhje 809 00:35:54,970 --> 00:36:00,680 kapitalizimin karakterin zero në t, çfarë po ndodh? 810 00:36:00,680 --> 00:36:06,310 E pra, t kllapa zero tani është vënë në për çfarë karakteri, me sa duket? 811 00:36:06,310 --> 00:36:07,460 >> Është treguar për h. 812 00:36:07,460 --> 00:36:08,870 Sepse t kllapa zero - 813 00:36:08,870 --> 00:36:12,490 kujtoj, kjo është sintaksa e vjetër. T kllapa zero thjesht do të thotë në qoftë se është një varg t, t 814 00:36:12,490 --> 00:36:15,590 parantezë zero do të thotë marrjen zero karakteri në atë forcë. 815 00:36:15,590 --> 00:36:18,650 Pra, ajo që me të vërtetë do të thotë është të shkoni në këtë grup - 816 00:36:18,650 --> 00:36:21,520 dhe po, kjo mund të jetë 123, kjo mund të jetë 124. 817 00:36:21,520 --> 00:36:22,790 Por kjo është e gjitha relative, mos harroni. 818 00:36:22,790 --> 00:36:25,640 Sa herë që flasim për një grup, ne kemi Përparësia e duke folur rreth 819 00:36:25,640 --> 00:36:27,000 Indekset e të afërm. 820 00:36:27,000 --> 00:36:31,120 >> Dhe kështu që tani që ne vetëm mund të supozojmë se zero grupim t eshte h. 821 00:36:31,120 --> 00:36:35,090 Pra, nëse unë e quaj 2 sipërme në atë, se çfarë është vërtetë duke bërë është kapitalizuar 822 00:36:35,090 --> 00:36:38,290 h vogle të uppercase H. Por sigurisht, çfarë është s? 823 00:36:38,290 --> 00:36:41,010 Është vënë në vargun e njëjtë mallkuar. 824 00:36:41,010 --> 00:36:44,200 >> Pra, kjo është e tëra që është duke ndodhur në këtë kod deri tani. 825 00:36:44,200 --> 00:36:45,960 Pra, çfarë është atëherë implikimi? 826 00:36:45,960 --> 00:36:48,300 Si nuk kemi zgjidhur këto dy probleme? 827 00:36:48,300 --> 00:36:50,870 Si nuk kemi të krahasohet me vargjet aktuale? 828 00:36:50,870 --> 00:36:53,720 >> E pra intuitive, si do ju shkoni në lidhje me krahasimin e dy 829 00:36:53,720 --> 00:36:55,090 strings për barazinë e vërtetë? 830 00:36:55,090 --> 00:36:58,920 831 00:36:58,920 --> 00:37:00,750 >> Çfarë do të thotë në qoftë se dy vargjet janë të barabartë? 832 00:37:00,750 --> 00:37:04,330 Në mënyrë të qartë nuk është se adresat e tyre janë barabartë në kujtesë, sepse kjo është një ulët 833 00:37:04,330 --> 00:37:06,590 Zbatimi nivel detaji. 834 00:37:06,590 --> 00:37:08,360 Të gjitha personazhet janë të njëjta. 835 00:37:08,360 --> 00:37:12,810 Pra më lejoni të propozojnë, dhe më lejoni të prezantoj në versionin e një compare.c 836 00:37:12,810 --> 00:37:14,970 këtu, kështu që krahasojnë-1.c. 837 00:37:14,970 --> 00:37:19,590 >> Më lejoni të propozoj që ne ende të marrë një pointer quajtur s, dhe dyqan në atë 838 00:37:19,590 --> 00:37:20,610 kthejë vlerën e vargut të merrni. 839 00:37:20,610 --> 00:37:21,750 Le të bëjmë të njëjtën gjë me t. 840 00:37:21,750 --> 00:37:23,230 Pra, asnjëri prej kodit është e ndryshme. 841 00:37:23,230 --> 00:37:25,420 Unë jam duke shkuar për të shtuar një pak më shumë error checking tani. 842 00:37:25,420 --> 00:37:29,390 Pra, tani që ne jemi lloj lëkurë mbrapa kjo shtresat në CS50 të asaj që një varg 843 00:37:29,390 --> 00:37:33,520 në të vërtetë është, ne duhet të jetë më anal lidhje me bërjen e sigurt se ne nuk e abuzimit 844 00:37:33,520 --> 00:37:35,330 vlerat e pavlefshme si null. 845 00:37:35,330 --> 00:37:36,440 >> Kështu që unë jam vetëm duke shkuar për të kontrolluar. 846 00:37:36,440 --> 00:37:41,490 Nëse s nuk nul barabartë dhe t nuk null barabartë, që do të thotë ne jemi OK. 847 00:37:41,490 --> 00:37:44,460 Get string nuk vidhos deri në marrjen e secila prej këtyre frazave. 848 00:37:44,460 --> 00:37:51,270 Dhe ju mund ndoshta me mend tani, çfarë STR CMP nuk duket të bëjë? 849 00:37:51,270 --> 00:37:52,000 String krahasuar. 850 00:37:52,000 --> 00:37:55,470 >> Pra, nëse ju keni programin në Java përpara, kjo është si të metodës barabartë në 851 00:37:55,470 --> 00:37:56,490 klasa string. 852 00:37:56,490 --> 00:37:57,890 Por për ato prej jush që nuk kanë programuar më parë, 853 00:37:57,890 --> 00:37:59,320 kjo është vetëm një funksion c. 854 00:37:59,320 --> 00:38:02,180 Kjo ndodh për të ardhur në një file i quajtur string. 855 00:38:02,180 --> 00:38:03,830 Kjo është ku është deklaruar. 856 00:38:03,830 --> 00:38:05,110 >> Dhe string krahasoni - 857 00:38:05,110 --> 00:38:07,530 Unë në fakt harroj përdorimin e saj, por mos u mërzit se. 858 00:38:07,530 --> 00:38:10,470 Kujtojnë se ne mund të bëjmë Njeriu, llokoçis krahasuar. 859 00:38:10,470 --> 00:38:12,590 Dhe kjo do të sjellë deri Linux programuesit manual. 860 00:38:12,590 --> 00:38:14,060 Dhe kjo është, sinqerisht, pak fshehtë. 861 00:38:14,060 --> 00:38:15,270 Por unë mund të shoh këtu se, yep. 862 00:38:15,270 --> 00:38:17,570 Unë duhet të përfshijë string. 863 00:38:17,570 --> 00:38:20,590 >> Dhe ai thotë se këtu sipas përshkrimit, " Krahaso string funksion krahason 864 00:38:20,590 --> 00:38:24,560 dy vargjet S1 dhe S2. "Dhe S1 dhe S2 janë me sa duket dy 865 00:38:24,560 --> 00:38:26,120 Argumentet kaloi in 866 00:38:26,120 --> 00:38:28,650 Unë vërtetë nuk e mbani mend se çfarë const është, por tani vini re - 867 00:38:28,650 --> 00:38:31,480 dhe ju mund të keni parë këtë tashmë kur ju keni përdorur faqet e njeri në qoftë se ju 868 00:38:31,480 --> 00:38:32,390 kanë të gjitha - 869 00:38:32,390 --> 00:38:36,220 se ylli char është vetëm sinonim me vargun. 870 00:38:36,220 --> 00:38:40,440 >> Pra, ajo krahason dy vargjet, S1 dhe S2, dhe ajo kthen një numër të plotë më pak 871 00:38:40,440 --> 00:38:44,930 se ose e barabartë me ose më e madhe se zero nëse S1 është gjetur, gjegjësisht të jetë 872 00:38:44,930 --> 00:38:47,450 më pak se, ose përputhen, ose të jetë më i madh se S2. 873 00:38:47,450 --> 00:38:51,220 Kjo është vetëm një mënyrë shumë kompleks i thënë: se string krahasoni kthimit 874 00:38:51,220 --> 00:38:55,760 zero nëse dy vargjet janë intuitive identike, karakteri për 875 00:38:55,760 --> 00:38:57,120 karakter për karakter. 876 00:38:57,120 --> 00:38:59,970 >> Ajo kthen një numër negativ, nëse s, sipas renditjes alfabetike, është menduar 877 00:38:59,970 --> 00:39:01,010 që do të vijnë para t. 878 00:39:01,010 --> 00:39:05,300 Ose kthen një numër pozitiv nëse s është menduar të dalë pas t 879 00:39:05,300 --> 00:39:06,170 sipas rendit alfabetik. 880 00:39:06,170 --> 00:39:08,360 Pra, me këtë funksion të thjeshtë, mund të ju, për shembull, një lloj 881 00:39:08,360 --> 00:39:09,770 bandë e tërë e fjalëve? 882 00:39:09,770 --> 00:39:13,984 >> Pra, në këtë version të ri, unë jam duke shkuar të shkojnë përpara dhe të bëjë compare1. 883 00:39:13,984 --> 00:39:15,750 Dot slash krahasoni një. 884 00:39:15,750 --> 00:39:18,030 Unë do të shkruani në përshëndetje në të gjithë rastin më të ulët. 885 00:39:18,030 --> 00:39:20,300 Unë jam duke shkuar për të shkruani në përshëndetje në të gjitha shkronja jokapitale përsëri. 886 00:39:20,300 --> 00:39:23,340 Dhe fatmirësisht tani ajo realizon I shtypur të njëjtën gjë. 887 00:39:23,340 --> 00:39:27,520 >> Ndërkohë, në qoftë se unë të shkruani në përshëndetje në më të ulët Rasti dhe HELLO në rast sipërme dhe 888 00:39:27,520 --> 00:39:29,710 krahasojnë ato, unë shtypur gjëra të ndryshme. 889 00:39:29,710 --> 00:39:32,530 Sepse jo vetëm që janë adresat të ndryshme, por ne jemi të krahasuar 890 00:39:32,530 --> 00:39:35,350 karaktere të ndryshme përsëri dhe përsëri. 891 00:39:35,350 --> 00:39:37,320 >> E pra le të shkojë dhe të rregullojmë një Problemi tjetër tani. 892 00:39:37,320 --> 00:39:41,590 Më lejoni të hapë një version të kopje, e cila tani drejtohet 893 00:39:41,590 --> 00:39:42,900 kjo çështje si më poshtë. 894 00:39:42,900 --> 00:39:45,650 Dhe kjo po ndodh që të shohim pak më komplekse. 895 00:39:45,650 --> 00:39:49,320 Por në qoftë se ju mendoni se çfarë problemi ne nevojë për të zgjidhur, shpresojmë se kjo do të jetë 896 00:39:49,320 --> 00:39:51,870 qartë në një moment të vetëm tani. 897 00:39:51,870 --> 00:39:57,280 >> Pra, kjo linjë e parë, char fillim t, në kushtet e laik dikush mund të propozojë 898 00:39:57,280 --> 00:39:59,450 Çfarë kjo do të thotë vija këtu? 899 00:39:59,450 --> 00:40:01,050 Char yll t, çfarë është se duke bërë? 900 00:40:01,050 --> 00:40:06,660 901 00:40:06,660 --> 00:40:07,210 >> Mirë. 902 00:40:07,210 --> 00:40:09,500 Krijo një tregues për disa spot në kujtesë. 903 00:40:09,500 --> 00:40:10,930 Dhe më lejoni të përsosin atë pak. 904 00:40:10,930 --> 00:40:17,180 Deklarojë një ndryshore që do të shtie adresa e disa char në kujtesë, vetëm 905 00:40:17,180 --> 00:40:18,480 të jetë pak më e duhur. 906 00:40:18,480 --> 00:40:21,210 >> OK, kështu që tani në anën e djathtë, unë kam parë kurrë një prej këtyre funksioneve 907 00:40:21,210 --> 00:40:22,660 para, malloc. 908 00:40:22,660 --> 00:40:26,980 Por çfarë mund të thotë kjo? 909 00:40:26,980 --> 00:40:28,050 Ndarja e kujtesës. 910 00:40:28,050 --> 00:40:29,410 Memory ndarja. 911 00:40:29,410 --> 00:40:33,050 >> Pra, ajo rezulton, deri tani, ne nuk kanë me të vërtetë kishte një mënyrë e fuqishme për 912 00:40:33,050 --> 00:40:36,210 duke i kërkuar sistemit operativ, jepni disa kujtesës. 913 00:40:36,210 --> 00:40:39,980 Përkundrazi, ne tani kemi një funksion të quajtur malloc që bën pikërisht këtë. 914 00:40:39,980 --> 00:40:42,960 Edhe pse kjo është pak e një çmenduri tani, vini re se në 915 00:40:42,960 --> 00:40:46,200 mes dy kllapa është vetëm do të jetë një numër. 916 00:40:46,200 --> 00:40:48,510 Ku e kam shtypur në fjalë Shenjat mund të jetë një numër. 917 00:40:48,510 --> 00:40:51,020 >> Dhe ky numër do të thotë, më jepni 10 bytes. 918 00:40:51,020 --> 00:40:52,320 Më jepni 20 bytes. 919 00:40:52,320 --> 00:40:53,820 Më jep 100 bytes. 920 00:40:53,820 --> 00:40:56,500 Dhe malloc do të bëjë çmos për të pyesni e sistemit operativ - 921 00:40:56,500 --> 00:40:57,630 Linux, në këtë rast - 922 00:40:57,630 --> 00:40:59,630 hej, janë 100 bytes tyre e RAM në dispozicion? 923 00:40:59,630 --> 00:41:04,320 Nëse është kështu, kthehen ato bytes për mua nga kthimin adresën e së cilës e 924 00:41:04,320 --> 00:41:06,610 ato bytes, ndoshta? 925 00:41:06,610 --> 00:41:07,610 Shumë të parë një. 926 00:41:07,610 --> 00:41:10,460 >> Pra, edhe këtu - dhe kjo është mbizotërues C, në çdo kohë që ju jeni 927 00:41:10,460 --> 00:41:11,680 që kanë të bëjnë me adresat? 928 00:41:11,680 --> 00:41:15,830 Ju jeni pothuajse gjithmonë kanë të bëjnë me adresa e parë e tillë, pa marrë parasysh sa e madhe 929 00:41:15,830 --> 00:41:19,490 një copë e kujtesës që ju janë duke u dorëzoi prapa, kështu që të flasin. 930 00:41:19,490 --> 00:41:20,880 >> Pra, le të zhyten në diskutim këtu. 931 00:41:20,880 --> 00:41:23,940 Unë jam duke u përpjekur të ndajë se si bytes shumë, saktësisht? 932 00:41:23,940 --> 00:41:24,080 Well. 933 00:41:24,080 --> 00:41:26,090 Gjatësia e String s - le të bëjë një shembull konkret. 934 00:41:26,090 --> 00:41:30,700 Nëse s eshte Përshëndetje, H-E-L-L-O, ajo eshte Gjatësia e string s, natyrisht? 935 00:41:30,700 --> 00:41:32,010 Pra, kjo është pesë. 936 00:41:32,010 --> 00:41:34,590 Por unë jam duke bërë një plus 1 në atë, pse? 937 00:41:34,590 --> 00:41:37,700 Pse nuk dua gjashtë bytes në vend të pesë? 938 00:41:37,700 --> 00:41:38,790 Karakteri null. 939 00:41:38,790 --> 00:41:41,210 >> Unë nuk dua të lë jashtë kësaj karakter të veçantë null. 940 00:41:41,210 --> 00:41:45,160 Sepse në qoftë se kam bërë një kopje të Përshëndetje dhe vetëm të bëjë H-E-L-L-O, por unë nuk e vënë 941 00:41:45,160 --> 00:41:50,160 që karakteri i veçantë, kompjuter nuk mund të ketë, rastësisht, një backslash 942 00:41:50,160 --> 00:41:51,730 zero aty për mua. 943 00:41:51,730 --> 00:41:55,570 Dhe kështu që në qoftë se unë jam duke u përpjekur të kuptoj se Gjatësia e kopjes, unë mund të mendojnë se 944 00:41:55,570 --> 00:41:59,360 kjo është 20 karaktere të gjatë, ose një milion karaktere të gjatë në qoftë se unë kurrë nuk ndodhë vetëm 945 00:41:59,360 --> 00:42:01,050 për të goditur një zero backslash. 946 00:42:01,050 --> 00:42:05,780 >> Pra, ne kemi nevojë për gjashtë bytes për të ruajtur H-E-L-L-O, backslash zero. 947 00:42:05,780 --> 00:42:07,870 Dhe pastaj kjo është vetëm të jetë super anal. 948 00:42:07,870 --> 00:42:10,700 Le të supozojmë se unë të harrojmë se çfarë madhësinë e një char eshte. 949 00:42:10,700 --> 00:42:12,020 Ne mbajmë duke thënë se ajo e një bajt. 950 00:42:12,020 --> 00:42:12,860 Dhe ajo zakonisht është. 951 00:42:12,860 --> 00:42:15,425 Në teori, kjo mund të jetë diçka ndryshëm, në një Mac ndryshëm ose një 952 00:42:15,425 --> 00:42:16,250 PC të ndryshme. 953 00:42:16,250 --> 00:42:19,650 >> Pra, ajo rezulton se ka ky operator quajtur sizeof se në qoftë se ju të kalojë atë të 954 00:42:19,650 --> 00:42:22,680 emri i një lloji të dhënave - si char, ose int, ose float - 955 00:42:22,680 --> 00:42:26,930 ajo do të ju them, dinamike, sa bytes një char merr deri në këtë 956 00:42:26,930 --> 00:42:28,090 kompjuter veçanti. 957 00:42:28,090 --> 00:42:31,360 >> Pra, kjo është në mënyrë efektive vetëm si duke thënë herë 1 apo 958 00:42:31,360 --> 00:42:32,440 herë asgjë në të gjitha. 959 00:42:32,440 --> 00:42:36,340 Por unë jam duke bërë atë vetëm të jetë super anal, vetëm në rast se një char ndryshon 960 00:42:36,340 --> 00:42:40,610 në kompjuterin tuaj kundrejt minave, në këtë mënyrë matematikë është gjithmonë do të shikoni. 961 00:42:40,610 --> 00:42:43,720 >> Së fundi, këtu poshtë unë kontrolloni for null, e cila është gjithmonë një praktikë e mirë - përsëri, 962 00:42:43,720 --> 00:42:44,920 çdo herë që ne jemi që kanë të bëjnë me pointers. 963 00:42:44,920 --> 00:42:47,520 Nëse malloc nuk ishte në gjendje të japin mua gjashtë byes - e cila është 964 00:42:47,520 --> 00:42:49,210 nuk ka gjasa, por vetëm në rast - 965 00:42:49,210 --> 00:42:50,730 kthehen një menjëherë. 966 00:42:50,730 --> 00:42:53,290 Dhe tani, të shkojnë përpara dhe kopje string si më poshtë. 967 00:42:53,290 --> 00:42:57,240 Dhe kjo është sintaksë e njohur, megjithëse në një rol të ndryshëm. 968 00:42:57,240 --> 00:43:01,210 >> Unë jam duke shkuar për të shkuar përpara dhe për të marrë string Gjatësia e s dhe ruajtur atë në n. 969 00:43:01,210 --> 00:43:06,620 Atëherë unë jam duke shkuar për të iterate nga i barabartë zero deri tek e përfshirë n, 970 00:43:06,620 --> 00:43:08,410 më e madhe se ose e barabartë me. 971 00:43:08,410 --> 00:43:13,540 Kështu që në çdo përsëritje, kam vënë Karakteri i ith s në ith 972 00:43:13,540 --> 00:43:15,380 Karakteri i t. 973 00:43:15,380 --> 00:43:18,190 >> Pra, çfarë ndodh në të vërtetë nën individualitet këtu? 974 00:43:18,190 --> 00:43:22,140 E pra, nëse këtë, për shembull, është s - 975 00:43:22,140 --> 00:43:26,400 dhe kam shtypur ne fjale H-E-L-L-O dhe ka një backslash zero. 976 00:43:26,400 --> 00:43:29,020 Dhe përsëri, kjo është s vënë këtu. 977 00:43:29,020 --> 00:43:30,830 Dhe tani këtu është t. 978 00:43:30,830 --> 00:43:34,860 >> Dhe kjo është treguar tani për një kopje e kujtesës, e drejtë? 979 00:43:34,860 --> 00:43:37,340 Malloc ka dhënë mua një e tërë copë e kujtesës. 980 00:43:37,340 --> 00:43:41,440 Unë nuk e di fillimisht se çfarë është në ndonjë nga këto vende. 981 00:43:41,440 --> 00:43:44,340 Kështu që unë jam duke shkuar për të menduar këto si një bandë e tërë e pikëpyetjesh. 982 00:43:44,340 --> 00:43:50,190 >> Por, sa më shpejt që unë të fillojë looping nga zero on deri me gjatësinë e ve, t 983 00:43:50,190 --> 00:43:52,790 parantezë zero dhe t kllapa 1 - 984 00:43:52,790 --> 00:43:55,080 dhe unë do të vënë këtë tani në të sipërm - 985 00:43:55,080 --> 00:44:04,190 t parantezë zero dhe s kllapa zero do të thotë që unë jam duke shkuar për të kopjimit 986 00:44:04,190 --> 00:44:09,875 iteratively h këtu, E-L-L-O. Plus, sepse unë e bëri plus 987 00:44:09,875 --> 00:44:12,370 1, backslash zero. 988 00:44:12,370 --> 00:44:19,060 >> Deri tani në rastin e krahasoni-1.c, në fund, në qoftë se unë të shtypura nga 989 00:44:19,060 --> 00:44:24,760 kapitalizimi i t, ne duhet shihni se s është i pandryshuar. 990 00:44:24,760 --> 00:44:26,090 Më lejoni tani të shkojnë përpara dhe të bëjë këtë. 991 00:44:26,090 --> 00:44:28,630 Pra, të bëjë copy1. 992 00:44:28,630 --> 00:44:30,860 Dot slash copy1. 993 00:44:30,860 --> 00:44:33,670 Unë jam duke shkuar për të shkruani në hello, Enter. 994 00:44:33,670 --> 00:44:37,430 Dhe tani vini re, vetëm një kopje e është kapitalizuar. 995 00:44:37,430 --> 00:44:40,890 Sepse unë me të vërtetë kam dy chunks e kujtesës. 996 00:44:40,890 --> 00:44:44,390 >> Për fat të keq, ju mund të bëni disa goxha gjëra të këqija dhe shumë e rrezikshme këtu. 997 00:44:44,390 --> 00:44:49,290 Më lejoni të tërheq lart një shembull këtu tani, që na jep një shembull të një pakice 998 00:44:49,290 --> 00:44:51,540 linja të ndryshme. 999 00:44:51,540 --> 00:44:56,040 Pra, vetëm intuitive këtu, rreshti i parë e kodit, int x yll, është deklaruar 1000 00:44:56,040 --> 00:44:57,340 një ndryshore të quajtur x. 1001 00:44:57,340 --> 00:44:58,810 Dhe çfarë është lloji i të dhënave e asaj variable? 1002 00:44:58,810 --> 00:45:01,820 1003 00:45:01,820 --> 00:45:04,290 Çfarë është lloji i të dhënave që variable? 1004 00:45:04,290 --> 00:45:06,980 Kjo nuk ishte cliffhanger. 1005 00:45:06,980 --> 00:45:08,350 >> Lloji i të dhënave është ylli int. 1006 00:45:08,350 --> 00:45:12,600 Pra, çfarë do të thotë kjo? X do të ruajtur adresën e një int. 1007 00:45:12,600 --> 00:45:13,520 Thjeshtë si ajo. 1008 00:45:13,520 --> 00:45:16,220 Y është duke shkuar për të ruajtur adresa e një int. 1009 00:45:16,220 --> 00:45:18,390 Çfarë është linjë e tretë e kodit bërë atje? 1010 00:45:18,390 --> 00:45:21,850 Është e ndarjes sa bytes, ka shumë të ngjarë? 1011 00:45:21,850 --> 00:45:22,350 Katër. 1012 00:45:22,350 --> 00:45:25,460 Për shkak të madhësisë së një INT përgjithësisht katër, malloc nga katër jep 1013 00:45:25,460 --> 00:45:29,950 mua mbrapa adresën e një copë të kujtesës, e parë e të cilit është bytes 1014 00:45:29,950 --> 00:45:32,110 ruajtur tani në x. 1015 00:45:32,110 --> 00:45:34,410 >> Tani ne jemi duke lëvizur pak më shpejt. 1016 00:45:34,410 --> 00:45:35,760 Star x çfarë do të thotë? 1017 00:45:35,760 --> 00:45:38,480 1018 00:45:38,480 --> 00:45:42,590 Kjo do të thotë të shkojnë në atë adresë dhe e vënë atë numër atje? 1019 00:45:42,590 --> 00:45:43,870 Vendos numrin 42 atje. 1020 00:45:43,870 --> 00:45:47,590 Star y do të thotë të shkojnë në atë që është në y dhe të vënë numrin 13 atje. 1021 00:45:47,590 --> 00:45:48,600 >> Por, prit një minutë. 1022 00:45:48,600 --> 00:45:51,640 Çfarë është në y në këtë moment? 1023 00:45:51,640 --> 00:45:54,950 Cila është adresa ruajtjen y? 1024 00:45:54,950 --> 00:45:55,770 Ne nuk e dimë, e drejtë? 1025 00:45:55,770 --> 00:45:59,230 Ne kurrë nuk kanë përdorur një herë detyrën Operatori përfshin y. 1026 00:45:59,230 --> 00:46:03,370 Pra, si y deklaruar në rreshtin e dytë të Kodi është vetëm disa vlera plehrash, një i madh 1027 00:46:03,370 --> 00:46:04,760 pikëpyetje në mënyrë që të flasin. 1028 00:46:04,760 --> 00:46:07,230 Kjo mund të jetë duke treguar rastësisht me çdo gjë në memorie, e cila 1029 00:46:07,230 --> 00:46:08,340 është përgjithësisht e keqe. 1030 00:46:08,340 --> 00:46:13,540 >> Pra, sa më shpejt që ne e goditi atë vijë atje, yll y barabartë me 13, diçka të keqe, 1031 00:46:13,540 --> 00:46:17,220 diçka shumë e keqe është në lidhje të ndodhë me Binky. 1032 00:46:17,220 --> 00:46:25,810 Pra, le të shohim se çfarë do të përfundojë deri ndodh me Binky këtu në këtë minutë 1033 00:46:25,810 --> 00:46:26,200 ose kështu duket. 1034 00:46:26,200 --> 00:46:26,490 >> [Video playback] 1035 00:46:26,490 --> 00:46:26,745 >> -Hej, Binky. 1036 00:46:26,745 --> 00:46:27,000 Zgjoheni. 1037 00:46:27,000 --> 00:46:29,296 Është koha për argëtim akrep. 1038 00:46:29,296 --> 00:46:30,680 >> -Çfarë është ajo? 1039 00:46:30,680 --> 00:46:31,980 Mësoni rreth pointers? 1040 00:46:31,980 --> 00:46:34,010 Oh, goodie. 1041 00:46:34,010 --> 00:46:37,220 >> -E pra, për të filluar, unë mendoj se ne jemi do të duhet një pointers çift. 1042 00:46:37,220 --> 00:46:37,930 >> -OK. 1043 00:46:37,930 --> 00:46:41,650 Ky kod ndan dy pointers cilat mund pikë të numrave të plotë. 1044 00:46:41,650 --> 00:46:43,760 >> -OK, mirë, unë shoh dy pointers. 1045 00:46:43,760 --> 00:46:45,850 Por ata nuk duket të jetë duke treguar për asgjë. 1046 00:46:45,850 --> 00:46:46,490 >> -Kjo është e drejtë. 1047 00:46:46,490 --> 00:46:48,630 Fillimisht, pointers nuk tregojnë për ndonjë gjë. 1048 00:46:48,630 --> 00:46:51,700 Gjërat që ata tregojnë për të quhen pointees, dhe vendosjen e tyre up është një 1049 00:46:51,700 --> 00:46:52,850 Hapi i veçantë. 1050 00:46:52,850 --> 00:46:53,740 >> -Oh, e drejtë, e drejtë. 1051 00:46:53,740 --> 00:46:54,500 Unë e dinte se. 1052 00:46:54,500 --> 00:46:56,270 Të pointees janë të ndara. 1053 00:46:56,270 --> 00:46:58,553 Pra, si mendoni ju akordojë një pointee? 1054 00:46:58,553 --> 00:46:59,480 >> -OK. 1055 00:46:59,480 --> 00:47:03,707 E pra, ky kod alokon një integers reja pointee, dhe kjo pjesë përcakton X 1056 00:47:03,707 --> 00:47:05,520 të tregojnë për atë. 1057 00:47:05,520 --> 00:47:06,760 >> -Hej, ajo duket më mirë. 1058 00:47:06,760 --> 00:47:08,520 Pra, të bëjë atë të bëjë diçka. 1059 00:47:08,520 --> 00:47:09,530 >> -OK. 1060 00:47:09,530 --> 00:47:14,110 Unë do dereference x pointer për të ruajtur numri 42 në pointee saj. 1061 00:47:14,110 --> 00:47:17,660 Për këtë mashtrim, unë do të duhet magjinë time shkop magjik i dereferencing. 1062 00:47:17,660 --> 00:47:20,695 >> -Juaj shkop magjik i dereferencing? 1063 00:47:20,695 --> 00:47:22,632 Uh, kjo është e madhe. 1064 00:47:22,632 --> 00:47:24,620 >> -Kjo është ajo që duket si kodi. 1065 00:47:24,620 --> 00:47:27,526 Unë vetëm do të ngritur numrin, dhe - 1066 00:47:27,526 --> 00:47:28,250 >> -Hej, shikoni. 1067 00:47:28,250 --> 00:47:29,680 Ka ajo shkon. 1068 00:47:29,680 --> 00:47:34,520 Pra, duke bërë një x dereference në vijim arrow për të hyrë pointee saj. 1069 00:47:34,520 --> 00:47:36,690 Në këtë rast, për të ruajtur 42 në atje. 1070 00:47:36,690 --> 00:47:40,890 Hej, provoni duke e përdorur atë për të ruajtur numrin 13 përmes treguesin tjetër, y. 1071 00:47:40,890 --> 00:47:42,125 >> -OK. 1072 00:47:42,125 --> 00:47:46,810 Unë do të shkoj vetëm mbi këtu për y dhe marrë numrin 13 ngritur. 1073 00:47:46,810 --> 00:47:50,890 Dhe pastaj të marrë shkopin e dereferencing dhe vetëm - 1074 00:47:50,890 --> 00:47:52,430 Whoa! 1075 00:47:52,430 --> 00:47:53,030 >> -Oh, hej. 1076 00:47:53,030 --> 00:47:54,610 Që nuk punojnë. 1077 00:47:54,610 --> 00:47:58,200 Thuaj, Binky, unë nuk mendoj dereferencing y është një ide e mirë, 1078 00:47:58,200 --> 00:48:01,370 sepse ngritjen e pointee është një hap i veçantë. 1079 00:48:01,370 --> 00:48:03,460 Dhe unë nuk mendoj se ne ndonjëherë e bëri atë. 1080 00:48:03,460 --> 00:48:03,810 >> -Hmm. 1081 00:48:03,810 --> 00:48:05,160 Mirë pikë. 1082 00:48:05,160 --> 00:48:07,410 >> -Po, ne kemi ndarë y akrep. 1083 00:48:07,410 --> 00:48:10,045 Por kurrë nuk kemi vënë atë në pikës te nje pointee. 1084 00:48:10,045 --> 00:48:10,490 >> -Hmm. 1085 00:48:10,490 --> 00:48:12,170 Shumë i vëmendshëm. 1086 00:48:12,170 --> 00:48:13,790 >> -Hej, ju jeni në kërkim mirë atje, Binky. 1087 00:48:13,790 --> 00:48:16,920 Mund të ma rregulloni atë në mënyrë që pika y për të pointee njëjtë si X? 1088 00:48:16,920 --> 00:48:17,810 >> -Sigurisht. 1089 00:48:17,810 --> 00:48:20,300 Unë do të përdorin shkop magjik e mia pointer detyrë. 1090 00:48:20,300 --> 00:48:22,240 >> -Është se do të jetë një problem si më parë? 1091 00:48:22,240 --> 00:48:22,665 >> -Nr. 1092 00:48:22,665 --> 00:48:24,300 Kjo nuk do të prekë pointees. 1093 00:48:24,300 --> 00:48:27,880 Ajo ndryshon vetëm një tregues për pikë të njëjtën gjë si një tjetër. 1094 00:48:27,880 --> 00:48:28,970 >> -Oh, unë shoh. 1095 00:48:28,970 --> 00:48:31,730 Tani pika y në të njëjtin vend si x. 1096 00:48:31,730 --> 00:48:32,450 Pra, të presim. 1097 00:48:32,450 --> 00:48:33,490 Tani y është fikse. 1098 00:48:33,490 --> 00:48:34,630 Ajo ka një pointee. 1099 00:48:34,630 --> 00:48:36,520 Kështu që ju mund të përpiquni të shkop magjik i dereferencing përsëri 1100 00:48:36,520 --> 00:48:39,200 për të dërguar më shumë se 13. 1101 00:48:39,200 --> 00:48:39,840 >> -OK. 1102 00:48:39,840 --> 00:48:41,570 Këtu shkon. 1103 00:48:41,570 --> 00:48:42,870 >> -Hej, shikoni në atë. 1104 00:48:42,870 --> 00:48:44,320 Tani dereferencing punimet për y. 1105 00:48:44,320 --> 00:48:47,020 Dhe për shkak se janë për ndarjen e pointers se një pointee, ata 1106 00:48:47,020 --> 00:48:48,585 të dyja shihni 13. 1107 00:48:48,585 --> 00:48:49,040 >> -Po. 1108 00:48:49,040 --> 00:48:49,670 Sharing. 1109 00:48:49,670 --> 00:48:50,380 Çfarëdo. 1110 00:48:50,380 --> 00:48:52,290 Pra jemi duke shkuar vende ndërroni tani? 1111 00:48:52,290 --> 00:48:52,970 >> -Oh, shikoni. 1112 00:48:52,970 --> 00:48:54,150 Ne jemi jashtë kohës. 1113 00:48:54,150 --> 00:48:55,200 >> -Por - 1114 00:48:55,200 --> 00:48:57,060 >> -Vetëm mos harroni të tre Rregullat akrep. 1115 00:48:57,060 --> 00:49:00,100 Numri një, struktura bazë është se ju keni një pointer. 1116 00:49:00,100 --> 00:49:02,170 Dhe ajo tregon mbi te nje pointee. 1117 00:49:02,170 --> 00:49:04,160 Por, akrep dhe pointee janë të ndara. 1118 00:49:04,160 --> 00:49:06,460 Dhe gabim i përbashkët është që të ngritur një tregues, por për të 1119 00:49:06,460 --> 00:49:08,540 harrojnë për të dhënë një pointee. 1120 00:49:08,540 --> 00:49:12,460 >> Numri dy, dereferencing akrep fillon në treguesin e saj dhe ndjek 1121 00:49:12,460 --> 00:49:14,570 mbi shigjetë për të hyrë pointee saj. 1122 00:49:14,570 --> 00:49:18,640 Siç e dimë të gjithë, kjo punon vetëm në qoftë se ka eshte nje pointee, që merr mbrapsht tek 1123 00:49:18,640 --> 00:49:19,790 sundojnë një numër. 1124 00:49:19,790 --> 00:49:23,670 >> Numri tre, caktimi akrep merr një akrep dhe ndryshimet që ajo të çojnë tek 1125 00:49:23,670 --> 00:49:25,850 pointee njëjtë si një tjetër tregues. 1126 00:49:25,850 --> 00:49:27,840 Pra, pas cedimit, dy pointers do 1127 00:49:27,840 --> 00:49:29,430 pikë të pointee njëjtë. 1128 00:49:29,430 --> 00:49:31,600 Ndonjëherë kjo quhet sharing. 1129 00:49:31,600 --> 00:49:33,430 Dhe kjo është e gjitha nuk është për atë, me të vërtetë. 1130 00:49:33,430 --> 00:49:33,840 Bye bye tani. 1131 00:49:33,840 --> 00:49:34,300 >> [VIDEO END rishikim] 1132 00:49:34,300 --> 00:49:36,940 >> DAVID Malan: Pra, më shumë pointers, Binky më shumë në javën e ardhshme. 1133 00:49:36,940 --> 00:49:38,190 Ne do të shohim ju në hënën. 1134 00:49:38,190 --> 00:49:42,187