1 00:00:00,000 --> 00:00:11,242 >> [CHWARAE CERDDORIAETH] 2 00:00:11,242 --> 00:00:16,630 >> DAVID J. Malan: Pob hawl hyn yn CS50 ac mae hyn yn dechrau wythnos bump. 3 00:00:16,630 --> 00:00:21,480 Felly heddiw, dan eich clustogau sedd, Ni fyddwch yn dod o hyd i unrhyw beth. 4 00:00:21,480 --> 00:00:24,790 Ond yn fwy na, dylech ddod o hyd i hyn, mae ychydig o arwydd o'n gwerthfawrogiad 5 00:00:24,790 --> 00:00:26,970 yr holl waith yr ydych yn ei roi i mewn i'r Gêm Fifteen. 6 00:00:26,970 --> 00:00:30,290 Yn syml, cael gwared ar y cylch bach ar y gwaelod i ddechrau chwarae ar gyfer y 7 00:00:30,290 --> 00:00:31,680 weddill y dosbarth. 8 00:00:31,680 --> 00:00:38,930 >> Felly dwyn i gof bod, neu yn gwybod bod problem a osodwyd pedwar, a aeth allan y penwythnos yma, 9 00:00:38,930 --> 00:00:40,340 golygu ysgrifennu gêm arall. 10 00:00:40,340 --> 00:00:43,740 Ond y tro hwn mae'n cynnwys defnyddio gwirioneddol rhyngwyneb defnyddiwr graffigol, nid yw 11 00:00:43,740 --> 00:00:46,310 rhyngwyneb testunol fel Game of Pymtheg oedd. 12 00:00:46,310 --> 00:00:50,210 Ac mae'r gêm sy'n gorwedd o'ch blaen, os nad ydych chi wedi gweld hyd yn hyn nesaf, 13 00:00:50,210 --> 00:00:52,310 yn edrych yn rhywbeth bach fel hyn. 14 00:00:52,310 --> 00:00:55,170 Rydw i'n mynd i fynd i mewn i fy terfynell ffenestr yma yn GDB. 15 00:00:55,170 --> 00:00:58,600 Ac yr wyf i'n mynd i fynd yn ei flaen ac yn rhedeg y ateb staff, y gallwch gael mynediad 16 00:00:58,600 --> 00:01:01,010 ar ôl rhedeg diweddariad 50 fel arfer. 17 00:01:01,010 --> 00:01:04,090 >> Ond dw i'n mynd i roi i mewn i ychydig modd dirgel, ychydig o wy Pasg, 18 00:01:04,090 --> 00:01:08,480 hyn a elwir yn ddelw Duw, yn ôl rhoi Duw yn argv1. 19 00:01:08,480 --> 00:01:12,920 Ac mae'n rhaid i mi ddilyn fy cyfarwyddiadau eu hunain, yn rhedeg yn fy mhen fy hun 20 00:01:12,920 --> 00:01:14,220 problem yn gosod cyfeiriadur. 21 00:01:14,220 --> 00:01:19,190 Felly, byddwch yn awr yn gweld fersiwn cyflawn y gêm o Breakout. 22 00:01:19,190 --> 00:01:21,090 Mewn gwirionedd, mae hyn yn dull dim-dwylo. 23 00:01:21,090 --> 00:01:24,850 Felly mae'n mewn gwirionedd - 24 00:01:24,850 --> 00:01:26,470 wowed er y gallech fod - 25 00:01:26,470 --> 00:01:30,850 eithaf dibwys i weithredu modd Duw yn Breakout, yn wahanol i gêm o Fifteen, 26 00:01:30,850 --> 00:01:33,590 y gallai rhai ohonoch wedi mynd i'r afael ar gyfer y rhifyn haciwr. 27 00:01:33,590 --> 00:01:37,890 >> Yn Breakout Mae'n ddigonol yn Nuw modd i wneud dim ond gwneud beth, 28 00:01:37,890 --> 00:01:41,220 reddfol â'r olwyn? 29 00:01:41,220 --> 00:01:45,630 Dim ond yn ei gwneud yn gyfartal beth bynnag fo'r sefyllfa llorweddol yn y bêl. 30 00:01:45,630 --> 00:01:49,220 A chyn belled ag y byddwch yn gwneud hyn yn lockstep gyda'r bêl yn symud y gêm hon yn 31 00:01:49,220 --> 00:01:53,100 byth, byth, byth yn colli'r bêl a byddwch yn ennill bob tro. 32 00:01:53,100 --> 00:01:55,430 >> Ond yn y rhifyn haciwr yr wythnos hon mae mwy na dim ond modd Duw. 33 00:01:55,430 --> 00:01:56,720 Mae yna nifer o nodweddion eraill. 34 00:01:56,720 --> 00:01:58,140 Yn eu plith, laserau. 35 00:01:58,140 --> 00:02:01,070 Felly, os ydych yn wir yn mynd yn ddiamynedd i chi gallu dechrau saethu i lawr y brics 36 00:02:01,070 --> 00:02:02,120 ac ychydig o rai eraill. 37 00:02:02,120 --> 00:02:04,560 Ac i'r rhai ohonoch a hoffai raddnodi safon yn erbyn haciwr 38 00:02:04,560 --> 00:02:08,750 argraffiad, gallaf weld bod yr wythnos hon rhifyn haciwr yn fwriadol yn 39 00:02:08,750 --> 00:02:12,830 ychydig yn fwy doable, dyweder, na Duw modd oedd gyda Game of Pymtheg. 40 00:02:12,830 --> 00:02:15,300 >> Felly, os ydych yn chwilio am y tro ac ydych yn chwilio am ychydig o hwyl ychwanegol 41 00:02:15,300 --> 00:02:18,400 nodweddion yn plymio i mewn os o ddiddordeb. 42 00:02:18,400 --> 00:02:21,280 Nawr yn fwy ymarferol, gadewch i mi dynnu sylw allan un peth hefyd. 43 00:02:21,280 --> 00:02:24,780 GDB, a oedd efallai na fydd rhai ohonoch chi eto cyffwrdd yn bersonol, sy'n iawn. 44 00:02:24,780 --> 00:02:28,530 Ond yn awr yn wir yn yr amser i ddod i arfer i hyn ac yn gyfforddus gyda'r offeryn hwn 45 00:02:28,530 --> 00:02:31,510 oherwydd bydd yn gwneud eich bywyd llawer haws, yn wir. 46 00:02:31,510 --> 00:02:34,900 >> Fesul ddarlith Rob ar GDB gwpl o wythnosau yn ôl, dwyn i gof 47 00:02:34,900 --> 00:02:36,810 bod GDB yn dadfygiwr. 48 00:02:36,810 --> 00:02:41,230 Mae'n offeryn sy'n eich galluogi i redeg eich rhaglen, ond redeg gam wrth gam, llinell 49 00:02:41,230 --> 00:02:45,680 gan y lein, er mwyn i chi brocio o gwmpas, er mwyn i chi weld pethau'n digwydd, ac felly 50 00:02:45,680 --> 00:02:47,310 y gallwch ei argraffu gwerthoedd y newidynnau. 51 00:02:47,310 --> 00:02:50,580 Yn fyr, mae'n rhoi llawer mwy i chi rym na printDef yn ei wneud. 52 00:02:50,580 --> 00:02:52,900 >> Yn awr rhaid cyfaddef, y rhyngwyneb yn eithaf dirgel. 53 00:02:52,900 --> 00:02:55,180 Rhyngwyneb du a gwyn testunol ar gyfer y rhan fwyaf. 54 00:02:55,180 --> 00:02:57,400 Mae'r gorchmynion braidd yn anodd i'w cofio ar y dechrau. 55 00:02:57,400 --> 00:03:01,230 Ond hyd yn oed er y gallai fod yn mynd â chi hanner yr awr, yr awr, i roi'r ymlaen llaw 56 00:03:01,230 --> 00:03:02,940 buddsoddi amser i mewn iddo, ymddiried ynof. 57 00:03:02,940 --> 00:03:06,440 Yn sicr erbyn diwedd semester a fydd yn arbed eich gorchymyn o faint yn fwy 58 00:03:06,440 --> 00:03:07,600 amser na hynny. 59 00:03:07,600 --> 00:03:09,200 >> Felly, yn gynnar yn y plymio wythnos i mewn 60 00:03:09,200 --> 00:03:13,200 Ac o ran Breakout, yn gwybod eich bod yn Gellir gwneud hyn ar yr amod bod gennych 61 00:03:13,200 --> 00:03:18,230 y cod dosbarthu neu eich cod eich hun ar y gweill yn eich llyfr Pst4. 62 00:03:18,230 --> 00:03:21,680 Gwybod y gallwch redeg gdb. / Breakout. 63 00:03:21,680 --> 00:03:23,490 >> Mae hyn yn mynd i agor ffenestr fel hyn. 64 00:03:23,490 --> 00:03:25,530 Gadewch i mi roi mwy o fy hun o ffenestr terfynell. 65 00:03:25,530 --> 00:03:27,770 Ac yna yr hyn yr wyf i'n mynd i fynd yn ei flaen ac yn ei wneud, mae'n nid yn unig yn rhedeg. 66 00:03:27,770 --> 00:03:30,690 Rydw i'n mynd i osod pwynt torri yn gyntaf dwyn i gof, sy'n eich galluogi i oedi 67 00:03:30,690 --> 00:03:32,500 gweithredu mewn lle penodol. 68 00:03:32,500 --> 00:03:35,750 >> Dim ond i gadw pethau'n syml rwyf i'n mynd i dorri ar linell un yn unig drwy deipio 69 00:03:35,750 --> 00:03:37,000 y rhif un. 70 00:03:37,000 --> 00:03:40,080 71 00:03:40,080 --> 00:03:43,250 Gadewch i mi mewn gwirionedd yn ail-agor y ffenestr hon oherwydd ei fod yn cael 72 00:03:43,250 --> 00:03:45,700 ychydig bach yno. 73 00:03:45,700 --> 00:03:53,270 Felly, yr hyn yr wyf i'n awr yn mynd i'w wneud yma yw os byddaf yn agor fy ffenest terfynell. 74 00:03:53,270 --> 00:03:53,910 Dewch ar, dyna ni. 75 00:03:53,910 --> 00:03:59,850 >> Felly, yn awr os byddaf yn mynd yn ôl i Dropbox, Pst4 a rhedeg gdb. / breakout fynd, sylwch 76 00:03:59,850 --> 00:04:02,600 Rydw i'n mynd i dorri un i osod pwynt egwyl llinell gyntaf. 77 00:04:02,600 --> 00:04:04,840 Ac yn awr yr wyf i'n mynd i fynd ymlaen llaw a math rhedeg. 78 00:04:04,840 --> 00:04:07,370 A phan wyf yn ei wneud, yn sylwi dim ymddangos i ddigwydd. 79 00:04:07,370 --> 00:04:08,120 >> Does dim i fyny pop. 80 00:04:08,120 --> 00:04:09,790 Does dim graffigol rhyngwyneb defnyddiwr eto. 81 00:04:09,790 --> 00:04:13,340 Ond mae hynny'n ddealladwy oherwydd fy mod i'n llythrennol yn y llinell gyntaf yn fy rhaglen. 82 00:04:13,340 --> 00:04:17,110 Ac yn sylwi fy mod i wedi eu hanfon ymlaen yn gyflym, yn benodol yn awr i 62, gan fod yr holl 83 00:04:17,110 --> 00:04:20,600 y pethau ar ben y ffeil yn pethau fel sylwadau a cysonion a 84 00:04:20,600 --> 00:04:22,460 anniddorol pethau ar hyn o bryd. 85 00:04:22,460 --> 00:04:25,840 >> Felly, yn awr yr wyf i'n tu mewn o brif, mae'n ymddangos, yn llinell 62. 86 00:04:25,840 --> 00:04:27,960 Ac mae hyn yn unig yw dosbarthiad cod, galw i gof. 87 00:04:27,960 --> 00:04:33,810 Os byddaf yn agor hyn drwy fynd, yn yr un modd, i mewn i fy cyfeiriadur blwch gollwng i mewn i Pst4, 88 00:04:33,810 --> 00:04:35,450 i mewn i breakout.c. 89 00:04:35,450 --> 00:04:40,670 Ac os wyf yn sgroliwch i lawr ac i lawr ac i lawr, a gadewch i mi fynd yn ei flaen ac yn troi ar 90 00:04:40,670 --> 00:04:44,990 fy rhifau llinell. 91 00:04:44,990 --> 00:04:50,300 >> Beth 'N annhymerus' gweld, os wyf yn sgroliwch i lawr i llinell 62, yn union y llinell y 92 00:04:50,300 --> 00:04:50,910 rydym wedi seibio ar. 93 00:04:50,910 --> 00:04:53,720 Felly y llinell yma, 62, yn lle rydym chi ar fin i fod. 94 00:04:53,720 --> 00:04:57,470 Felly nawr yn GDB, os wyf yn mynd yn ei flaen a theipiwch awr nesaf, rhowch ei fod yn mynd i 95 00:04:57,470 --> 00:04:58,450 gweithredu llinell honno. 96 00:04:58,450 --> 00:05:00,610 Ac voila, mae gennym y hyn a elwir yn ffenestr g. 97 00:05:00,610 --> 00:05:02,800 Os anghyfarwydd â'r hyn a GWindow yw, i beidio â phoeni. 98 00:05:02,800 --> 00:05:05,740 Bydd y fanyleb yn eich cyflwyno i hynny, fel y ogystal â nifer o fideos walkthrough 99 00:05:05,740 --> 00:05:06,830 gwreiddio yn y fanyleb. 100 00:05:06,830 --> 00:05:08,610 >> Ond yn awr gadewch i ni wneud hyn yn ychydig yn fwy diddorol. 101 00:05:08,610 --> 00:05:10,960 Gadewch i mi symud y ffenestr hon dros i'r ochr ychydig. 102 00:05:10,960 --> 00:05:13,480 Gadewch imi wneud y ffenestr ychydig fwy felly gallaf weld mwy. 103 00:05:13,480 --> 00:05:16,140 >> Ac yn awr gadewch i mi fynd yn ei flaen ac yn ei wneud nesaf eto. 104 00:05:16,140 --> 00:05:17,550 Ac mae fy brics. 105 00:05:17,550 --> 00:05:20,490 Os byddaf yn teipio nesaf eto yn awr yr wyf yn gweld y bêl. 106 00:05:20,490 --> 00:05:23,520 Ac os wyf yn teipio nesaf eto yn awr yr wyf yn gweld y Stemars. 107 00:05:23,520 --> 00:05:26,690 >> Ac yn ffodus nid gedit hyn yn wir yn cydweithio drwy ddangos i mi 108 00:05:26,690 --> 00:05:27,660 popeth rwyf eisiau. 109 00:05:27,660 --> 00:05:30,820 Ond yn awr, os wyf yn ei wneud nesaf eto, nesaf eto, Im 'jyst 110 00:05:30,820 --> 00:05:32,260 datgan rhai newidynnau. 111 00:05:32,260 --> 00:05:34,750 Ac yr wyf yn gallu argraffu unrhyw un o guys hyn allan. 112 00:05:34,750 --> 00:05:37,170 Brics Print, bywydau printiau. 113 00:05:37,170 --> 00:05:39,910 >> Ac yn awr, os byddaf yn parhau i wneud nesaf, sylwch y byddaf yn 114 00:05:39,910 --> 00:05:40,870 tu mewn y ddolen. 115 00:05:40,870 --> 00:05:43,380 Ond mae'r cod yn mynd i weithredu yn union fel yr wyf yn ei ddisgwyl. 116 00:05:43,380 --> 00:05:45,810 Felly, pan fyddaf yn cyrraedd y swyddogaeth hon, Aros am Clic, mae'n mynd i wneud 117 00:05:45,810 --> 00:05:46,830 yn llythrennol hynny. 118 00:05:46,830 --> 00:05:48,870 Felly, yr wyf yn ymddangos i wedi colli rheolaeth dros y rhaglen. 119 00:05:48,870 --> 00:05:50,480 >> Nid GDB yn rhoi i mi brydlon arall. 120 00:05:50,480 --> 00:05:51,500 Ond nid i boeni. 121 00:05:51,500 --> 00:05:53,720 Ewch i fy gêm, cliciwch yn rhywle. 122 00:05:53,720 --> 00:05:56,270 >> Ac voila, erbyn hyn mae'n mynd yn ei flaen i linell 86. 123 00:05:56,270 --> 00:05:59,460 Felly, unwaith eto, mae'n amhrisiadwy, yn y pen draw, ar gyfer problemau debugging. 124 00:05:59,460 --> 00:06:03,050 Oherwydd y gallwch llythrennol gamu trwy eich cod, print pethau allan a llawer, 125 00:06:03,050 --> 00:06:03,640 llawer, mwy. 126 00:06:03,640 --> 00:06:07,210 Ond am nawr, offer hynny yn unig Dylai fynd â chi 'n bert lawer. 127 00:06:07,210 --> 00:06:10,050 >> Felly, rydym yn, wrth gwrs, yn edrych mewn Graffeg nawr, yn sydyn. 128 00:06:10,050 --> 00:06:12,350 Ac yn awr ein byd yn cael ychydig yn fwy diddorol. 129 00:06:12,350 --> 00:06:15,680 A ydych yn gwybod, efallai, gan rai o'r fideos ar-lein bod gennym y 130 00:06:15,680 --> 00:06:18,280 siorts eich bod wedi bod yn gwylio fel rhan o setiau broblem. 131 00:06:18,280 --> 00:06:20,460 >> Ac maen nhw wedi cael eu saethu, yn fwriadol, yn erbyn cefndir gwyn. 132 00:06:20,460 --> 00:06:23,380 Ac mae rhai ohonynt yn cael y dysgu Cymrodyr dynnu rhywfaint o destun ar y 133 00:06:23,380 --> 00:06:25,490 sgrîn sy'n ei gorchuddio ar yr ochr iddynt. 134 00:06:25,490 --> 00:06:27,760 Ond wrth gwrs, nid yw hyn yn bob un sy'n diddorol yn y byd go iawn. 135 00:06:27,760 --> 00:06:30,520 Mae hyn yn unig yw neuadd darlith gyda sgrîn wen fawr a chefndir. 136 00:06:30,520 --> 00:06:33,330 Ac mae ein math tîm cynhyrchu anhygoel o wneud popeth yn edrych yn hardd 137 00:06:33,330 --> 00:06:36,620 ar ôl y ffaith drwy cnydio allan neu droshaenu unrhyw beth 138 00:06:36,620 --> 00:06:37,840 rydym yn ei wneud neu ddim eisiau. 139 00:06:37,840 --> 00:06:41,560 >> Nawr dim ond i gymell yr wythnos hon ac mewn gwirionedd, lle gallwch fynd, yn y pen draw, 140 00:06:41,560 --> 00:06:42,560 gyda gwyddoniaeth gyfrifiadurol. 141 00:06:42,560 --> 00:06:44,260 Nid dim ond ar ôl problem gosod pedwar. 142 00:06:44,260 --> 00:06:48,240 Ond ar ôl cwrs arall neu cyfan cwricwlwm mae'n syndod beth allwch 143 00:06:48,240 --> 00:06:51,090 wneud y dyddiau hyn o ran graffeg yn arbennig. 144 00:06:51,090 --> 00:06:53,440 >> Efallai y bydd rhai ohonoch wedi gweld y llifo o amgylch ar-lein. 145 00:06:53,440 --> 00:06:56,240 Ond yr wyf yn meddwl y byddwn yn dangos i chi, am ddim ond ychydig o funudau, cipolwg o'r hyn 146 00:06:56,240 --> 00:07:01,890 technoleg gyfrifiadurol a pha CGI, Gall graffeg gyfrifiadurol wneud y dyddiau hyn 147 00:07:01,890 --> 00:07:04,510 gyda chân gyfarwydd ac efallai ffilm. 148 00:07:04,510 --> 00:07:05,760 >> [CERDDORIAETH - Lana DEL RAY, "IFANC A hardd] 149 00:07:05,760 --> 00:10:50,270 150 00:10:50,270 --> 00:10:52,470 >> SIARADWR 1: Mae'n ychydig bach anhygoel, efallai, pa mor 151 00:10:52,470 --> 00:10:52,857 hollbresennol - 152 00:10:52,857 --> 00:10:57,040 >> [Cymeradwyaeth] 153 00:10:57,040 --> 00:10:59,230 >> SIARADWR 1: Fi jyst ei lwytho. 154 00:10:59,230 --> 00:11:02,920 Ond mae'n wirioneddol anhygoel, yr wyf yn credu, dim ond sut mae meddalwedd hollbresennol a chod a 155 00:11:02,920 --> 00:11:04,230 offer fel hyn mewn gwirionedd. 156 00:11:04,230 --> 00:11:07,685 Felly dyna flas o'r cyfeiriad y gallwch fynd. 157 00:11:07,685 --> 00:11:10,620 O, dim mwy Appliance heddiw. 158 00:11:10,620 --> 00:11:14,640 Wel, dyna amseru mewn gwirionedd yn drasig o ystyried y pwynt Fi jyst yn ceisio gwneud. 159 00:11:14,640 --> 00:11:18,670 >> Mae pob hawl, felly gadewch i ni lansio Fusion eto. 160 00:11:18,670 --> 00:11:20,800 Atgoffwch mi yn ddiweddarach. 161 00:11:20,800 --> 00:11:24,190 Mae pob hawl, a dylech fod wedi got an e-bost fel neilltu pe baech yn gwneud yn cael 162 00:11:24,190 --> 00:11:25,460 rhybudd fel 'na. 163 00:11:25,460 --> 00:11:29,940 Mae pob hawl, fel dwyn i gof bod yr wythnos diwethaf rydym yn dechrau croen yn ôl y 164 00:11:29,940 --> 00:11:31,380 a elwir yn ddiweddarach fel llinyn. 165 00:11:31,380 --> 00:11:34,700 >> llinyn cofio math data sy'n datgan yn y llyfrgell CS50. 166 00:11:34,700 --> 00:11:37,740 Ac mae'n rhan o'r olwynion hyfforddiant fydd yn awr yn dechrau cymryd i ffwrdd. 167 00:11:37,740 --> 00:11:41,280 Roedd yn gysyniad defnyddiol yn gynnar. 168 00:11:41,280 --> 00:11:43,750 Ond yn awr mae'n mynd i gael mwy o diddorol ac yn fwy pwerus i 169 00:11:43,750 --> 00:11:48,330 mewn gwirionedd yn gweld bod o dan y cwfl, llinyn yn unig yw hyn, gwnaethom ddweud? 170 00:11:48,330 --> 00:11:50,500 >> Yeah, felly mae'n hyn a elwir yn torgoch *. 171 00:11:50,500 --> 00:11:53,860 A'r * mae yn dynodi fod yna rhyw fath o gyfeiriad dan sylw. 172 00:11:53,860 --> 00:11:58,690 Ac felly pan fyddwch yn dweud torgoch * 'ch jyst yn golygu newidyn y mae ei ddata fath yn 173 00:11:58,690 --> 00:11:59,290 pwyntydd awr. 174 00:11:59,290 --> 00:12:01,770 Mae'r ffaith fod yna y seren yno yn unig yn golygu eich bod yn datgan 175 00:12:01,770 --> 00:12:03,020 hyn a elwir yn pwyntydd. 176 00:12:03,020 --> 00:12:06,220 A bod pwyntydd yn mynd i ymddangos yn storio cyfeiriad, o 177 00:12:06,220 --> 00:12:07,810 gwrs, torgoch. 178 00:12:07,810 --> 00:12:08,960 >> Nawr, pam mae hyn yn gwneud synnwyr? 179 00:12:08,960 --> 00:12:11,200 Wel, beth yw llinyn o dan y cwfl? 180 00:12:11,200 --> 00:12:15,130 Wel, ers peth amser rydym wedi bod yn ei ddweud bod llinyn o dan y cwfl yn 181 00:12:15,130 --> 00:12:18,460 dim ond h-e-l-l-o, er enghraifft. 182 00:12:18,460 --> 00:12:21,585 >> Ond rydym wedi siarad am hyn sef, yn y bôn, arae. 183 00:12:21,585 --> 00:12:25,410 Ac y byddai amrywiaeth yna edrych ychydig mwy fel hyn, gyda phob un o'r rhain 184 00:12:25,410 --> 00:12:26,460 ymgymryd â brathu. 185 00:12:26,460 --> 00:12:28,710 Ac yna rydym wedi dweud fod yna rhywbeth arbennig yn ôl yma, y 186 00:12:28,710 --> 00:12:31,270 slaes 0, neu terminator null. 187 00:12:31,270 --> 00:12:35,230 >> Felly yr holl amser hwn, mae hyn yn fan wedi bod yn llinyn. 188 00:12:35,230 --> 00:12:38,320 Ond mewn gwirionedd, mae llinyn yn mewn gwirionedd cyfeiriad. 189 00:12:38,320 --> 00:12:43,210 A chyfeiriadau, fel y byddwn yn gweld, yn aml yn rhagddodi â 0x ôl confensiwn. 190 00:12:43,210 --> 00:12:44,540 Beth mae 0x dynodi? 191 00:12:44,540 --> 00:12:45,970 Oes rhywun yn gwybod? 192 00:12:45,970 --> 00:12:47,320 >> Felly, 'i jyst yn golygu hecsadegol. 193 00:12:47,320 --> 00:12:52,360 Felly efallai y byddwch yn cofio, mewn gwirionedd, o pst 1, yr wyf yn credu, un o'r cynhesu 194 00:12:52,360 --> 00:12:55,740 cwestiynau a ofynnir mewn gwirionedd am nodiant hecsadegol yn ogystal â 195 00:12:55,740 --> 00:12:57,100 deuaidd ac degol. 196 00:12:57,100 --> 00:13:00,460 A'r cymhelliant yma yw bod gyda hecsadegol gennych 16 197 00:13:00,460 --> 00:13:01,770 digidau ar gael i chi. 198 00:13:01,770 --> 00:13:07,900 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ac yna gan a, b, c, d, e, f. 199 00:13:07,900 --> 00:13:10,430 >> Ac os ydych yn cyfrif pob un hyd, byddwch yn cael cyfanswm o 16. 200 00:13:10,430 --> 00:13:13,200 Felly, mae hyn yn cyferbynnu â degol, lle mae gennym 10 201 00:13:13,200 --> 00:13:14,690 digid, 0 drwy naw. 202 00:13:14,690 --> 00:13:17,750 Mae yn wahanol i deuaidd lle rydym yn unig wedi 0 ac 1. 203 00:13:17,750 --> 00:13:21,450 >> Ond ar ddiwedd y dydd y gallwch dim ond cynrychioli'r un rhifau, ond 204 00:13:21,450 --> 00:13:22,500 ychydig yn wahanol. 205 00:13:22,500 --> 00:13:25,840 Ac hecsadegol yn gyffredin oherwydd fel y mae'n troi allan - a byddwn yn gweld hyn 206 00:13:25,840 --> 00:13:28,790 ddiweddarach yn y cwrs - hyd yn oed pan fyddwn yn cael i raglenni ar y we yng nghyd-destun 207 00:13:28,790 --> 00:13:32,100 HTML a chodau lliw, hecsadegol yn braf. 208 00:13:32,100 --> 00:13:36,390 Gan fod pob digid, yn troi allan, yn cynrychioli pedwar darnau berffaith. 209 00:13:36,390 --> 00:13:39,280 Felly, 'i jyst fath o linellau i fyny' n glws fel y byddwn yn gweld yn y pen draw. 210 00:13:39,280 --> 00:13:44,720 Felly, gallai hyn fod Ox123 neu rywbeth fel 'na, cyfeiriad dynodi 123 211 00:13:44,720 --> 00:13:47,050 rhywle y tu mewn o fy cof cyfrifiadur. 212 00:13:47,050 --> 00:13:50,600 >> Ond wrth gwrs, mae rhai problemau'n codi oherwydd hyn sylfaenol 213 00:13:50,600 --> 00:13:51,520 gweithredu. 214 00:13:51,520 --> 00:13:55,930 Ac yn cofio imi gymryd drywanu yn gweithredu swyddogaeth fel hyn - 215 00:13:55,930 --> 00:14:00,260 cymharu dash 0 dot c yr wythnos diwethaf, hyd yn oed er ei fod yn edrych fel ei fod yn 216 00:14:00,260 --> 00:14:04,270 iawn, mae'n nid yn unig yn cymharu'n dau llinynnau yn gywir. 217 00:14:04,270 --> 00:14:07,470 >> Rydw i wedi taflu i ffwrdd prif, ac rydw i wedi taflu gwared ar y sylwadau yn unig i ganolbwyntio ar 218 00:14:07,470 --> 00:14:08,970 y cod sydd o ddiddordeb yma. 219 00:14:08,970 --> 00:14:10,660 Ac mae'n mewn coch oherwydd ei fod yn bygi. 220 00:14:10,660 --> 00:14:11,670 Am ba reswm? 221 00:14:11,670 --> 00:14:15,890 >> Wel, ar y brig yno pan fyddaf yn datgan llinyn, beth oedd yn digwydd mewn gwirionedd 222 00:14:15,890 --> 00:14:17,260 o dan y cwfl? 223 00:14:17,260 --> 00:14:19,530 Wel, gadewch i mi fynd draw i'r sgrinio yma ac yn tynnu hynny. 224 00:14:19,530 --> 00:14:23,230 Felly yr wyf yn datgan, unwaith eto, llinyn s GetString. 225 00:14:23,230 --> 00:14:26,640 >> Felly, yr wyf i'n mynd i fynd yn ei flaen yn awr ac tynnu s am yr hyn y mae mewn gwirionedd. 226 00:14:26,640 --> 00:14:28,590 Mae'n mynd i fod yn sgwâr yma. 227 00:14:28,590 --> 00:14:30,490 Ac yr wyf i'n mynd i wneud cais bod yn 32 ddarnau. 228 00:14:30,490 --> 00:14:32,890 O leiaf mae fel arfer yw, o leiaf ar yr CS50 229 00:14:32,890 --> 00:14:34,520 offer mewn llawer o gyfrifiaduron. 230 00:14:34,520 --> 00:14:35,980 Rydw i'n mynd i alw s. 231 00:14:35,980 --> 00:14:39,070 >> Ond yn awr yn cofio ein bod yn Gelwir GetString. 232 00:14:39,070 --> 00:14:41,430 Ffurflenni Felly GetString, wrth gwrs, a llinyn. 233 00:14:41,430 --> 00:14:45,790 Os yw'r mathau o ddefnyddwyr yn h-e-l-l-o fynd i mewn y llinyn hello gael ei ddychwelyd. 234 00:14:45,790 --> 00:14:51,010 A bod llinyn, fel yr ydym newydd ei ddweud, yn dod i ben i fyny yn rhywle er cof eich cyfrifiadur 235 00:14:51,010 --> 00:14:53,240 gyda slaes 0 ar y diwedd. 236 00:14:53,240 --> 00:14:56,650 'N annhymerus' dynnu hyn fel y rhesi - neu bloc cyfagos o gymeriadau - 237 00:14:56,650 --> 00:14:58,330 ei fod mewn gwirionedd. 238 00:14:58,330 --> 00:15:01,790 >> Ac yn awr, yr hyn sy'n GetString mewn gwirionedd yn dychwelyd? 239 00:15:01,790 --> 00:15:04,340 Beth sydd wedi GetString bod yn dychwelyd i gyd y tro hwn? 240 00:15:04,340 --> 00:15:07,520 Wel, yr ydym yn dweud, mewn wythnosau blaenorol, mae'n dychwelyd llinyn. 241 00:15:07,520 --> 00:15:10,250 Ond yn fwy technegol, beth mae GetString dychwelyd yn ôl pob golwg? 242 00:15:10,250 --> 00:15:11,610 >> GYNULLEIDFA: Mae cyfeiriad. 243 00:15:11,610 --> 00:15:12,600 >> SIARADWR 1: Mae cyfeiriad. 244 00:15:12,600 --> 00:15:16,630 Yn benodol, mae'n dychwelyd y cyfeiriad y cynnig cyntaf iawn, beth bynnag ydyw. 245 00:15:16,630 --> 00:15:18,830 Fi jyst cadw defnyddio un, dau, tri oherwydd ei fod yn gyfleus. 246 00:15:18,830 --> 00:15:21,380 >> Mae'n dychwelyd y cyfeiriad y cyntaf gymeriad yn y llinyn. 247 00:15:21,380 --> 00:15:23,510 Ac rydym yn dweud yr wythnos diwethaf fod sy'n ddigonol. 248 00:15:23,510 --> 00:15:26,710 Oherwydd y gall rydym bob amser yn chyfrif i maes lle ddiwedd y llinyn yn unig gan 249 00:15:26,710 --> 00:15:30,150 ailadrodd drosto, efallai, gyda dros dolen neu ddolen gyfnod, neu rywbeth tebyg 250 00:15:30,150 --> 00:15:34,990 hynny, dim ond yn edrych am "slaes 0", cymeriad sentinel arbennig. 251 00:15:34,990 --> 00:15:37,220 >> Ac yna rydym yn gwybod bod y llinyn yn digwydd i fod o hyd - 252 00:15:37,220 --> 00:15:37,980 yn yr achos hwn - 253 00:15:37,980 --> 00:15:38,670 bump. 254 00:15:38,670 --> 00:15:43,800 Felly dechnegol beth GetString wneud yw dychwelyd Ox123 yn yr achos hwn. 255 00:15:43,800 --> 00:15:53,670 Ac yn dechnegol beth sy'n digwydd wedyn yw ein bod yn storio, tu mewn s, Ox123. 256 00:15:53,670 --> 00:15:56,460 Ar ddiwedd y dydd, er bod hyn yn gysyniad newydd, awgrymiadau, maen nhw'n 257 00:15:56,460 --> 00:15:57,350 dim ond newidynnau. 258 00:15:57,350 --> 00:16:00,440 Ond maent yn digwydd i storio darnau sy'n gyda'i gilydd yn cynrychioli cyfeiriad. 259 00:16:00,440 --> 00:16:03,700 Felly dechnegol popeth o fewn eu cael storio yn s yn Ox123. 260 00:16:03,700 --> 00:16:04,680 >> Ond yr ydym ni fel bodau dynol - 261 00:16:04,680 --> 00:16:06,020 gan gynnwys heddiw ymlaen - 262 00:16:06,020 --> 00:16:09,290 ddim wir yn mynd i ofal, yn nodweddiadol, beth y cyfeiriad ei hun yn 263 00:16:09,290 --> 00:16:10,520 o rai darn o gof. 264 00:16:10,520 --> 00:16:14,040 Dim ond at lefel isel o fanylion i yn ddeallusol ddiddorol. 265 00:16:14,040 --> 00:16:15,440 Felly, yr wyf i'n mynd i ddadwneud hyn. 266 00:16:15,440 --> 00:16:19,810 Ac yn hytrach, lefel fwy uchel, dywedwch pan fyddwn yn sôn am awgrymiadau 267 00:16:19,810 --> 00:16:22,170 Rydw i'n mynd i dim ond tynnu mwy arrow hawdd ei ddefnyddio sy'n cyfleu 268 00:16:22,170 --> 00:16:26,060 un syniad a chrynodebau i ffwrdd y manylion o'r hyn y mae'r gwir 269 00:16:26,060 --> 00:16:27,700 cyfeiriad sylfaenol yw. 270 00:16:27,700 --> 00:16:33,290 >> Nawr, os ydym yn mynd yn ôl at y cod, beth ddigwyddodd yr wythnos diwethaf os oes gennym llinyn t 271 00:16:33,290 --> 00:16:34,510 yn dychwelyd GetString? 272 00:16:34,510 --> 00:16:38,630 Wel, os wyf unwaith eto, teipiwch helo cyfnod hwn yr wyf i'n mynd i gael 273 00:16:38,630 --> 00:16:40,460 darn arall o gof. 274 00:16:40,460 --> 00:16:44,820 h-e-l-l-o slaes 0. 275 00:16:44,820 --> 00:16:48,320 >> Ond gan fy mod yn galw GetString yr ail waith - 276 00:16:48,320 --> 00:16:51,100 ac yr wyf yn gwybod hyn o edrych ar y cod ffynhonnell ar gyfer GetString - hyd yn oed 277 00:16:51,100 --> 00:16:54,350 er ei fod yn cyd-ddigwyddiad bod helo oedd teipio ddwywaith, nid yw GetString 278 00:16:54,350 --> 00:16:55,890 mynd i geisio i wneud y gorau a bod yn glyfar. 279 00:16:55,890 --> 00:16:58,550 Mae'n jyst yn mynd i gael darn arall o cof gan y cyfrifiadur, sy'n 280 00:16:58,550 --> 00:16:59,640 mynd i fod mewn cyfeiriad arall. 281 00:16:59,640 --> 00:17:02,330 Gadewch i ni ddweud fympwyol 456. 282 00:17:02,330 --> 00:17:04,079 >> Ac yna beth y mae'n mynd i ddychwelyd? 283 00:17:04,079 --> 00:17:08,030 Mae'n mynd i ddychwelyd 456 ac yn ei storio mewn t. 284 00:17:08,030 --> 00:17:12,010 Felly, beth sy'n digwydd mewn gwirionedd, ar y ochr chwith yw gennyf darn arall 285 00:17:12,010 --> 00:17:14,260 o gof, 32 darnau fel arfer. 286 00:17:14,260 --> 00:17:16,720 Ac yno yn mynd i fynd Ox456. 287 00:17:16,720 --> 00:17:20,140 Ond unwaith eto, dydw i ddim diddordeb yn y rhifau penodol anymore. 288 00:17:20,140 --> 00:17:23,069 Im 'jyst yn mynd i haniaethol dynnu fel saeth. 289 00:17:23,069 --> 00:17:25,202 >> Felly, mae hwn bellach yn esboniad newydd. 290 00:17:25,202 --> 00:17:28,735 Ond yr un peth union syniad sy'n bod yn digwydd yr holl amser hwn. 291 00:17:28,735 --> 00:17:33,150 Ac felly y rheswm yna, bod hyn yn gyntaf fersiwn cymharu yn bygi 292 00:17:33,150 --> 00:17:34,480 yr wythnos diwethaf yw pam? 293 00:17:34,480 --> 00:17:38,000 Pan fyddwch yn ei wneud os s yn hafal hafal i t beth ydych yn wir 294 00:17:38,000 --> 00:17:40,550 o dan y cwfl cymharu? 295 00:17:40,550 --> 00:17:41,910 >> Rydych yn cymharu'r cyfeiriadau. 296 00:17:41,910 --> 00:17:47,950 A dim ond yn reddfol, yn amlwg, Ox123 yn mynd i gyfartal Ox456. 297 00:17:47,950 --> 00:17:49,380 Niferoedd hynny, darnau hynny yn unig yn wahanol. 298 00:17:49,380 --> 00:17:53,220 >> Ac felly yn gyson, yr wythnos diwethaf dywedodd chi deipio pethau gwahanol, hyd yn oed os yw'r 299 00:17:53,220 --> 00:17:55,360 geiriau yn air am air yr un fath. 300 00:17:55,360 --> 00:17:58,770 Felly, rydym yn atgyweiria hon. 301 00:17:58,770 --> 00:18:00,120 Yn nhermau lleygwr, beth oedd y atgyweiria? 302 00:18:00,120 --> 00:18:02,110 >> GYNULLEIDFA: Defnyddiwch swyddogaeth. 303 00:18:02,110 --> 00:18:02,870 >> SIARADWR 1: Defnyddiwch swyddogaeth. 304 00:18:02,870 --> 00:18:05,190 Neu sêr yn cael eu cynnwys yn bendant, ond defnyddiwch swyddogaeth i wneud beth? 305 00:18:05,190 --> 00:18:05,962 >> GYNULLEIDFA: Er mwyn cymharu llinynnau. 306 00:18:05,962 --> 00:18:07,390 >> SIARADWR 1: I gymharu y tannau. 307 00:18:07,390 --> 00:18:11,030 Felly, y broblem sylfaenol yma oedd fy mod yn unig oedd yn ystyried y 308 00:18:11,030 --> 00:18:15,870 ansawdd o linynnau gael eu diffinio gan cymharu eu cyfeiriadau. 309 00:18:15,870 --> 00:18:18,540 Ac yn amlwg bod yn unig fud yn awr unwaith eich bod yn deall yr hyn sy'n mynd ymlaen 310 00:18:18,540 --> 00:18:19,510 o dan y cwfl. 311 00:18:19,510 --> 00:18:23,270 I wirioneddol cymharu llinynnau i weld a oes eu bod yn gyfartal yn y ffordd y bydd pobl 312 00:18:23,270 --> 00:18:26,680 yn ystyried dau llinynnau yn gyfartal mae angen i ni eu cymharu cymeriad 313 00:18:26,680 --> 00:18:28,070 cymeriad cymeriad. 314 00:18:28,070 --> 00:18:30,020 >> Nawr gallwn fod wedi gwneud hyn tediously iawn. 315 00:18:30,020 --> 00:18:32,240 Ond cyfarwydd, rydym yn defnyddio ar gyfer dolen. 316 00:18:32,240 --> 00:18:36,050 A dim ond cymharu s braced i yn erbyn t braced i. 317 00:18:36,050 --> 00:18:39,590 s braced i ac 1 yn erbyn t braced i ac 1, ac yn y blaen, y tu mewn 318 00:18:39,590 --> 00:18:40,580 rhyw fath o ddolen. 319 00:18:40,580 --> 00:18:44,950 Ac os byddaf yn sylwi ar unrhyw ddau gymeriad sy'n wahanol, neu os wyf yn sylweddoli bod www, yw 320 00:18:44,950 --> 00:18:48,410 fyrrach na t neu'n hwy na t Gallaf ddweud yn syth ffug, 321 00:18:48,410 --> 00:18:49,390 dydyn nhw ddim yr un fath. 322 00:18:49,390 --> 00:18:55,370 >> Ond os ydw i'n cael drwy s a t a dweud yr un, yr un, yr un, yr un, yr un, diwedd y 323 00:18:55,370 --> 00:18:58,520 ddau llinynnau, gallaf ddweud yn wir, maent yn gyfartal. 324 00:18:58,520 --> 00:19:01,040 Wel, diolch i'r drefn, flynyddoedd yn ôl rywun Ysgrifennodd y cod hwnnw i ni. 325 00:19:01,040 --> 00:19:03,790 >> A hwy a alwasant ei StrComp ar gyfer pedwarawd llinynnol cymharu. 326 00:19:03,790 --> 00:19:11,900 A hyd yn oed er ei fod yn ychydig cownter 'n athrylithgar, StrComp yn dychwelyd 0 os yw'r 327 00:19:11,900 --> 00:19:14,520 dau llinynnau, s a t yr un fath. 328 00:19:14,520 --> 00:19:18,090 Ond mae'n dychwelyd gwerth negyddol os yw Dylai ddod o flaen t yn nhrefn yr wyddor neu 329 00:19:18,090 --> 00:19:20,610 werth cadarnhaol os ddylai ddod ar ôl t yn nhrefn yr wyddor. 330 00:19:20,610 --> 00:19:24,030 >> Felly, os ydych chi erioed wedi eisiau i ddatrys rhywbeth, mae'n troi allan bod StrComp yn ddefnyddiol. 331 00:19:24,030 --> 00:19:26,660 Oherwydd nad yw'n dweud ie neu na, gyfartal neu beidio. 332 00:19:26,660 --> 00:19:30,440 Mae'n rhoi ymdeimlad o archebu i chi hoffi grym geiriadur. 333 00:19:30,440 --> 00:19:33,770 Felly StrComp, s coma t yn dychwelyd yn hafal i 0 yn golygu bod y 334 00:19:33,770 --> 00:19:35,200 llinynnau yn wirioneddol gyfartal. 335 00:19:35,200 --> 00:19:38,680 Oherwydd pwy bynnag ysgrifennodd swyddogaeth hon flynyddoedd yn ôl pob tebyg yn defnyddio ar gyfer dolen 336 00:19:38,680 --> 00:19:42,840 neu ddolen gyfnod, neu rywbeth fel 'na i integreiddio dros y cymeriadau eto 337 00:19:42,840 --> 00:19:45,270 ac eto ac eto. 338 00:19:45,270 --> 00:19:47,300 >> Ond cododd dwy broblem yma. 339 00:19:47,300 --> 00:19:48,750 Roedd hyn yn copy0.c. 340 00:19:48,750 --> 00:19:51,680 Ac mae'r ddau mewn coch yn oherwydd ei fod yn ddiffygiol. 341 00:19:51,680 --> 00:19:52,800 A beth wnaeth rydym yn ei wneud yma? 342 00:19:52,800 --> 00:19:54,310 Wel, yn gyntaf galwais GetString. 343 00:19:54,310 --> 00:19:56,255 Ac yr wyf yn storio gwerth ddychwelyd yn s. 344 00:19:56,255 --> 00:20:00,260 Felly dyna 'n bert lawer yr un fath ag y rhan uchaf y llun. 345 00:20:00,260 --> 00:20:01,490 >> Ond beth sy'n dod ar ôl hynny? 346 00:20:01,490 --> 00:20:04,980 Wel, gadewch i mi fynd yn ei flaen a chael gwared o criw cyfan o hyn. 347 00:20:04,980 --> 00:20:09,650 Byddwn yn ailddirwyn mewn pryd i ble rydym yn unig gael s, sydd bellach yn gyson â 348 00:20:09,650 --> 00:20:10,940 Llinell un i fyny yno. 349 00:20:10,940 --> 00:20:11,400 >> Rwy'n gwirio. 350 00:20:11,400 --> 00:20:13,450 Os s hafal dychwelyd 0. 351 00:20:13,450 --> 00:20:18,670 Yn awr, mae nodyn ochr cyflym, pan Gallai GetString dychwelyd 0? 352 00:20:18,670 --> 00:20:19,580 Nid oes digon o gof. 353 00:20:19,580 --> 00:20:19,880 Iawn? 354 00:20:19,880 --> 00:20:22,310 >> Mae'n brin bod hyn yn mynd i ddigwydd, yn sicr ar gyfrifiadur sy'n 355 00:20:22,310 --> 00:20:24,740 cael cannoedd o megs neu hyd yn oed gigs o RAM. 356 00:20:24,740 --> 00:20:27,080 Ond gallai fod, mewn theori, yn dychwelyd 0, yn enwedig os yw'r 357 00:20:27,080 --> 00:20:28,080 Nid yw'r defnyddiwr yn cydweithredu. 358 00:20:28,080 --> 00:20:31,640 Mae ffyrdd o esgus fel nad ydych wedi unrhyw beth fewnbynnu a tric 359 00:20:31,640 --> 00:20:34,100 GetString i ddychwelyd 0 yn effeithiol. 360 00:20:34,100 --> 00:20:35,470 >> Felly, mae'n mynd i wirio am hynny. 361 00:20:35,470 --> 00:20:39,430 Oherwydd os unrhyw un ohonoch wedi dechrau gael, yn barod, diffygion segmentu - 362 00:20:39,430 --> 00:20:42,280 yn ôl pob tebyg sydd wedi bod yn ffynhonnell o rai rhwystredigaeth - 363 00:20:42,280 --> 00:20:46,150 hynny yn bron bob amser yn y canlyniad o wall-gysylltiedig â'r cof. 364 00:20:46,150 --> 00:20:50,440 Rhywsut ydych cyboledig i fyny gyda sylw i pwyntydd, hyd yn oed os nad ydych yn sylweddoli 365 00:20:50,440 --> 00:20:51,530 roedd pwyntydd. 366 00:20:51,530 --> 00:20:55,260 Felly, efallai y byddwch wedi ysgogi segmentu diffygion mor gynnar â'r wythnos un yn defnyddio 367 00:20:55,260 --> 00:21:02,100 rhywbeth fel dolen neu am gyfnod dolen ac amrywiaeth drwy fynd yn rhy bell 368 00:21:02,100 --> 00:21:05,900 heibio i'r ffiniau rhai o'r amrywiaeth sy'n eich datgan, mewn wythnos dau yn 369 00:21:05,900 --> 00:21:06,690 penodol. 370 00:21:06,690 --> 00:21:09,220 >> Efallai eich bod wedi gwneud hynny hyd yn oed problem gosod pedwar gyda Breakout. 371 00:21:09,220 --> 00:21:12,910 Hyd yn oed er nad ydych yn ôl pob tebyg wedi gweld unrhyw sêr yn y cod dosbarthu ar gyfer 372 00:21:12,910 --> 00:21:17,410 Breakout, mae'n troi allan bod y rhai GRect a GOval a phethau eraill o'r fath, 373 00:21:17,410 --> 00:21:19,650 y rhai mewn gwirionedd awgrymiadau o dan y cwfl. 374 00:21:19,650 --> 00:21:23,430 >> Ond Stanford, fel ni, math o guddfannau sy'n rhoi manylion o leiaf ar gyfer y llyfrgelloedd 375 00:21:23,430 --> 00:21:26,540 dibenion, yn debyg iawn rydym yn ei wneud ar gyfer llinyn a torgoch *. 376 00:21:26,540 --> 00:21:30,060 Ond GRect a GOval ac i bawb Bydd pethau rydych guys yn cael neu yn defnyddio 377 00:21:30,060 --> 00:21:32,630 yr wythnos hon yn y pen draw cyfeiriadau cof. 378 00:21:32,630 --> 00:21:33,650 Dim ond nad ydych yn ei wybod. 379 00:21:33,650 --> 00:21:37,240 >> Felly, nid yw'n syndod felly, efallai, eich bod efallai daith dros rai 380 00:21:37,240 --> 00:21:38,580 diffygion segmentu. 381 00:21:38,580 --> 00:21:41,290 Ond yr hyn sy'n ddiddorol yma'n awr, os ar ôl i ni edrych am 0 rydym yn ei wneud 382 00:21:41,290 --> 00:21:43,460 llinyn t yn cael s. 383 00:21:43,460 --> 00:21:44,690 Wel, gadewch i mi ddatgan t. 384 00:21:44,690 --> 00:21:47,730 Rydw i'n mynd i dynnu fel sgwâr, 32 darnau, ei alw'n t. 385 00:21:47,730 --> 00:21:49,740 Ac yna yr wyf i'n mynd i wneud yn cael s. 386 00:21:49,740 --> 00:21:51,130 >> Wel, beth mae hynny'n ei olygu? 387 00:21:51,130 --> 00:21:53,280 Wel, mae'n ychydig yn anodd meddwl am y peth llun ddoeth. 388 00:21:53,280 --> 00:21:55,025 Ond gadewch i ni feddwl am beth sydd tu mewn x? 389 00:21:55,025 --> 00:21:59,430 Beth sydd llythrennol tu mewn newidyn hwn? 390 00:21:59,430 --> 00:22:01,500 Mae'r Ox123 gwerth. 391 00:22:01,500 --> 00:22:05,815 >> Felly, pan fyddaf yn dweud llinyn t yn cael s, mai dim ond llythrennol yn golygu cymryd y nifer 392 00:22:05,815 --> 00:22:10,070 yn s, sef Ox123 a'i roi Ox123. 393 00:22:10,070 --> 00:22:13,740 Neu ar ffurf lluniau, os wyf yn fath o haniaethol i ffwrdd oddi wrth y manylion ganddo'r 394 00:22:13,740 --> 00:22:16,600 effaith o wneud llythrennol hyn hefyd. 395 00:22:16,600 --> 00:22:22,110 >> Felly nawr, meddwl yn ôl at yr wythnos diwethaf pan rydym yn ei flaen i cyfalafol T. I 396 00:22:22,110 --> 00:22:23,800 gwnaeth T braced 0. 397 00:22:23,800 --> 00:22:27,150 Wel, T braced 0, hyd yn oed er ei fod yn pwyntydd, gallwch ei drin fel pe 398 00:22:27,150 --> 00:22:29,220 ei fod yn amrywiaeth, gyda sgwâr nodiant braced. 399 00:22:29,220 --> 00:22:31,550 >> Felly, lle mae T braced 0? 400 00:22:31,550 --> 00:22:32,990 Wel, mae'n yr h. 401 00:22:32,990 --> 00:22:36,800 Ac felly pan fyddwn yn defnyddio'r llinell o god, dau uchaf, sydd yn y c type.h 402 00:22:36,800 --> 00:22:38,460 ffeil flaen, dyna lle mae'n datgan. 403 00:22:38,460 --> 00:22:44,410 Rydych yn manteisio hwn H. Ond o gwrs, dyna'r un peth union h sy'n 404 00:22:44,410 --> 00:22:46,540 tu mewn, felly i siarad. 405 00:22:46,540 --> 00:22:51,930 Ac felly yn awr yr ydych wedi newid neu cyfalafu y gwreiddiol a'r 406 00:22:51,930 --> 00:22:53,120 hyn a elwir copi. 407 00:22:53,120 --> 00:22:56,620 Oherwydd nad ydych yn gwneud copi yn y modd ag y byddai pobl yn dymuno iddo fod. 408 00:22:56,620 --> 00:22:59,710 >> Felly beth oedd y atgyweiria yma, yn copy1.c yr wythnos diwethaf? 409 00:22:59,710 --> 00:23:03,070 410 00:23:03,070 --> 00:23:05,580 Swyddogaethau, felly gallem mewn gwirionedd copi y llinyn. 411 00:23:05,580 --> 00:23:08,700 Ac yn y bôn, yr hyn y mae angen i ni wneud er mwyn i gopïo y llinyn? 412 00:23:08,700 --> 00:23:12,070 >> Wel, yn y fersiwn gwyrdd yma rwy'n mynd i'w wneud lefel weddol isel. 413 00:23:12,070 --> 00:23:14,260 Mae yna mewn gwirionedd yn swyddogaethau gallent helpu gyda hyn. 414 00:23:14,260 --> 00:23:17,710 Ond yr un mwyaf sylfaenol, ac mae'r rhan fwyaf o un cyfarwydd, o leiaf, yn fuan yn 415 00:23:17,710 --> 00:23:19,600 gyfarwydd i ni, yn y canlynol - 416 00:23:19,600 --> 00:23:21,910 felly un ar y llinell gyntaf o god mewn gwyrdd awr. 417 00:23:21,910 --> 00:23:23,970 >> Fi jyst rewrote s fel y torgoch *. 418 00:23:23,970 --> 00:23:25,250 Does dim swyddogaethol gwahaniaeth yno. 419 00:23:25,250 --> 00:23:28,790 Fi jyst daflu i ffwrdd y llyfrgell CS50 ac Rwy'n galw ei beth ydyw, cols yn *. 420 00:23:28,790 --> 00:23:31,640 >> Nawr dot, dot, dot, oherwydd bod ychydig o wirio wall nad yw hynny'n 421 00:23:31,640 --> 00:23:33,200 ddiddorol i siarad am eto. 422 00:23:33,200 --> 00:23:34,710 Felly nawr t yn cael ei ddatgan. 423 00:23:34,710 --> 00:23:35,780 Mae hefyd yn torgoch yn *. 424 00:23:35,780 --> 00:23:38,280 Felly, yr wyf yn tynnu ychydig o sgwâr ar y sgrin fel o'r blaen. 425 00:23:38,280 --> 00:23:41,870 >> Ond ar yr ochr dde, malloc, rydym yn ei ddweud yw dyrannu cof. 426 00:23:41,870 --> 00:23:44,130 Felly dyrannu rhai darn o gof. 427 00:23:44,130 --> 00:23:48,830 A faint o bytes ydym mewn gwirionedd am ddyrannu, a yw'n ymddangos? 428 00:23:48,830 --> 00:23:50,340 >> Wel, hyd cyfres o s. 429 00:23:50,340 --> 00:23:52,310 Felly, os yw'n helo dyna mynd i fod yn bump oed. 430 00:23:52,310 --> 00:23:53,950 Byddwn yn dweud h-e-l-l-o. 431 00:23:53,950 --> 00:23:55,090 Felly pum bytes. 432 00:23:55,090 --> 00:23:57,960 >> Ond yna ynghyd ag 1, pam 1? 433 00:23:57,960 --> 00:23:58,830 Mae'r 0 cymeriad. 434 00:23:58,830 --> 00:24:03,640 Os nad ydym yn gadael lle i y boi rydym Efallai ddamweiniol yn creu sefyllfa 435 00:24:03,640 --> 00:24:05,600 lle mae'r llinyn yn h-e-l-l-o. 436 00:24:05,600 --> 00:24:08,470 Ac yna y GetString tro nesaf alw ac yr wyf deipio i mewn, er enghraifft, 437 00:24:08,470 --> 00:24:14,020 David, D-a-v-i-d, y cyfrifiadur yn mynd i feddwl ei fod ef mewn gwirionedd 438 00:24:14,020 --> 00:24:18,900 h-e-l-l-o-d-a-v-i-d oherwydd bod dim dorri i mewn rhwng y geiriau hynny. 439 00:24:18,900 --> 00:24:19,810 >> Felly mae angen bod egwyl. 440 00:24:19,810 --> 00:24:20,720 Felly, nid ydym am bump. 441 00:24:20,720 --> 00:24:22,100 Rydym am chwe bytes. 442 00:24:22,100 --> 00:24:23,110 >> Ac bytes rwy'n ei ddweud. 443 00:24:23,110 --> 00:24:25,220 Ond mae'n maint iawn amser torgoch. 444 00:24:25,220 --> 00:24:28,040 Yn dechnegol torgoch bron bob amser yn beit sengl. 445 00:24:28,040 --> 00:24:31,030 >> Ond dim ond er mwyn gwneud ein cod cludadwy, fel petai, fel ei fod yn gweithio ar 446 00:24:31,030 --> 00:24:33,750 gwahanol gyfrifiaduron, hyd yn oed os y gallent ychydig yn wahanol o dan y 447 00:24:33,750 --> 00:24:36,590 cwfl, yr wyf i'n mynd i generig dweud faint o torgoch fel y 448 00:24:36,590 --> 00:24:37,660 fy cod bob amser yn gweithio. 449 00:24:37,660 --> 00:24:40,610 Ac nid oes rhaid i mi ail-grynhoi 'i jyst yn oherwydd fy mod yn uwchraddio fy cyfrifiadur neu ddefnyddio 450 00:24:40,610 --> 00:24:42,140 rhai llwyfan gwahanol. 451 00:24:42,140 --> 00:24:45,300 >> Felly, yr wyf wedi cael 6 gwaith maint golosg, sy'n digwydd i fod yn 1. 452 00:24:45,300 --> 00:24:47,440 Felly, gallai fod yn golygu malloc roi chwe bytes mi. 453 00:24:47,440 --> 00:24:49,140 Beth yw bod yn ei wneud mewn gwirionedd? 454 00:24:49,140 --> 00:24:52,810 Wel, gadewch i mi rholio yn ôl mewn amser yma i ble yr ydym yn y stori. 455 00:24:52,810 --> 00:24:57,620 >> Felly os wyf yn mynd yn ôl yma, yr wyf wedi datgan torgoch a elwir yn * t. 456 00:24:57,620 --> 00:25:00,280 Yr wyf yn awr wedi galw malloc am chwe bytes. 457 00:25:00,280 --> 00:25:06,400 Ac yn awr yr wyf i'n mynd i dynnu chwech y rhai bytes yn union fel y casgliad yn gynharach. 458 00:25:06,400 --> 00:25:10,570 Ond nid wyf mewn gwirionedd yn gwybod beth sydd y tu mewn amrywiaeth hwn. 459 00:25:10,570 --> 00:25:14,640 >> Os ydych yn dyrannu cof mae'n troi allan bod nad ydych yn gallu ymddiried y mae rhywfaint o 460 00:25:14,640 --> 00:25:15,810 werth hysbys yno. 461 00:25:15,810 --> 00:25:18,400 Gallai fod wedi cael eu defnyddio gan rywbeth arall, mae rhai swyddogaeth arall, mae rhai eraill 462 00:25:18,400 --> 00:25:19,630 llinell o god eich bod wedi ysgrifennu. 463 00:25:19,630 --> 00:25:22,870 Felly, byddwn yn gyffredinol yn galw'r rhain yn garbage gwerthoedd ac yn tynnu nhw, efallai, fel 464 00:25:22,870 --> 00:25:26,170 marciau cwestiwn, dim ond dangos ein bod yn ddim yn gwybod beth sydd mewn gwirionedd yno. 465 00:25:26,170 --> 00:25:30,390 A dyna dim llawer mawr cyn belled ag y yn ddigon craff i ysgrifennu dros y rhai 466 00:25:30,390 --> 00:25:34,550 gwerthoedd garbage gyda rhifau neu chars yr ydym yn gofalu amdanynt. 467 00:25:34,550 --> 00:25:36,340 >> Felly, yn yr achos hwn, beth ydw i'n mynd i'w wneud? 468 00:25:36,340 --> 00:25:38,670 Wel, y cod fy llinell o nesaf, yr wyf wedi pedwar. 469 00:25:38,670 --> 00:25:41,350 int fi gael 0, n cael y hyd cyfres o s. 470 00:25:41,350 --> 00:25:42,750 Felly cyfarwydd ar gyfer dolen. 471 00:25:42,750 --> 00:25:45,875 I yn llai na neu'n hafal i n, sydd fel arfer yn uwch. 472 00:25:45,875 --> 00:25:47,500 >> Ond y tro hwn ei fod yn fwriadol. 473 00:25:47,500 --> 00:25:51,890 I + +, ac yna yr wyf yn syml yn gwneud t braced i cael s. 474 00:25:51,890 --> 00:25:56,320 Oherwydd bod fy llun yn edrych fel hyn ar hyn o bryd, ei storio mewn t yw'r 475 00:25:56,320 --> 00:25:59,530 gyfeiriad y darn ar hap o cof gwerthoedd y mae eu yn hysbys. 476 00:25:59,530 --> 00:26:03,030 Ond cyn gynted ag yr wyf yn ei wneud t braced 0 sy'n fy rhoi yma. 477 00:26:03,030 --> 00:26:07,430 >> A beth yn dod i ben hyd yn cael eu denu yno? 478 00:26:07,430 --> 00:26:08,740 Rydym yn y pen draw'n gwneud i h. 479 00:26:08,740 --> 00:26:11,170 Oherwydd dyna beth sydd yn y s braced 0. 480 00:26:11,170 --> 00:26:14,300 Ac yna yr un peth ar gyfer e, ac yn l, a l, ac o. 481 00:26:14,300 --> 00:26:17,930 >> n, pam wnes i mynd i fyny drwy cyfartal i n? 482 00:26:17,930 --> 00:26:19,200 Oherwydd y 0 cymeriad. 483 00:26:19,200 --> 00:26:23,580 Felly, dim ond i fod yn glir, yna, os wyf mewn gwirionedd yn dileu beth bynnag y garbage 484 00:26:23,580 --> 00:26:28,870 gwerthoedd ac yna tynnu mewn gwirionedd hyn yr wyf yn ei ddisgwyl, mae hyn yn s braced 1, 2, 485 00:26:28,870 --> 00:26:32,440 3, 4, yn ogystal â bod wedi llusgo chymeriad newydd. 486 00:26:32,440 --> 00:26:36,080 >> Ac felly yn awr os ydym yn parhau heibio i'r dot, dot, dot yn y fersiwn cywir 487 00:26:36,080 --> 00:26:41,930 a t cyfalafu braced 0 byddwn, o gwrs, yn cael eu manteisio dim ond y 488 00:26:41,930 --> 00:26:47,050 guy yma, sydd yn gysyniadol, yn y pen draw, y nod. 489 00:26:47,050 --> 00:26:48,040 Felly dyna i gyd y pwyntydd yn. 490 00:26:48,040 --> 00:26:51,430 >> A ydych wedi bod yn eu defnyddio am wythnosau erbyn hyn yng nghyd-destun llinynnau. 491 00:26:51,430 --> 00:26:53,530 Ond o dan y cwfl eu bod yn ychydig yn fwy cymhleth. 492 00:26:53,530 --> 00:26:57,520 Ond os ydych yn meddwl amdanynt yn y ffurf ddarluniadol Cynigiaf fod eu bod yn 493 00:26:57,520 --> 00:27:01,720 yn ôl pob tebyg nid bob un sy'n frawychus fel y maent yn allai ymddangos yn gyntaf ar yr olwg gyntaf, 494 00:27:01,720 --> 00:27:04,730 yn enwedig o gystrawen newydd o'r fath. 495 00:27:04,730 --> 00:27:07,290 Unrhyw gwestiynau am awgrymiadau, llinynnau, neu chars? 496 00:27:07,290 --> 00:27:07,580 Yeah? 497 00:27:07,580 --> 00:27:09,252 >> GYNULLEIDFA: Allwch chi fynd yn ôl i'r [Anghlywadwy]? 498 00:27:09,252 --> 00:27:10,502 >> SIARADWR 1: Cadarn. 499 00:27:10,502 --> 00:27:14,058 500 00:27:14,058 --> 00:27:19,525 >> GYNULLEIDFA: Felly sut yn dod yn eich olaf llinell, nad oes gennych linell t * 501 00:27:19,525 --> 00:27:21,513 a * s yn y llinell? 502 00:27:21,513 --> 00:27:23,004 Nid oes gennych y cyfeiriad at - 503 00:27:23,004 --> 00:27:24,640 >> SIARADWR 1: Ah, cwestiwn da iawn. 504 00:27:24,640 --> 00:27:26,800 Pam nad oes gen i * t a * s? 505 00:27:26,800 --> 00:27:30,340 Gan fod yn fyr, yr wythnos diwethaf, fel yn ein cyfnewid swyddogaeth, i ddim yn dweud bod pan 506 00:27:30,340 --> 00:27:33,350 gennych pwyntydd modd y yr ydych yn mynd yno fel y gwnaethom 507 00:27:33,350 --> 00:27:36,590 yn gorfforol ar y llwyfan, oedd mewn gwirionedd defnyddio'r gweithredwr seren. 508 00:27:36,590 --> 00:27:40,570 >> Mae'n ymddangos bod hyn yn sgwâr-braced nodiant yw'r hyn byddwn yn galw cystrawennol 509 00:27:40,570 --> 00:27:44,190 siwgr, sydd ychydig yn ffordd sexy o gan ddweud ei fod yn nodiant llaw-fer ar gyfer 510 00:27:44,190 --> 00:27:45,950 yn union yr hyn yr ydych yn disgrifio. 511 00:27:45,950 --> 00:27:49,385 Ond mae'n ychydig yn fwy 'n athrylithgar. 512 00:27:49,385 --> 00:27:53,510 Ac ar y perygl o wneud hyn yn ymddangos yn fwy cymhleth nag y mae angen iddo fod, 513 00:27:53,510 --> 00:27:56,990 beth sy'n digwydd mewn gwirionedd yma yw'r canlynol - 514 00:27:56,990 --> 00:28:01,450 Os wyf yn dweud * t sy'n golygu mynd i y cyfeiriad storio mewn t. 515 00:28:01,450 --> 00:28:04,350 >> Felly, yn llythrennol, os t yn storio y cyfeiriad hwnnw h 516 00:28:04,350 --> 00:28:07,300 i ddechrau, * yn golygu t ewch yma. 517 00:28:07,300 --> 00:28:10,730 Nawr, beth mae t braced 0 yn ei olygu? 518 00:28:10,730 --> 00:28:11,560 Union beth un fath. 519 00:28:11,560 --> 00:28:13,510 Dim ond ychydig yn fwy defnyddiwr gyfeillgar i ysgrifennu. 520 00:28:13,510 --> 00:28:14,430 >> Ond dydw i ddim yn ei wneud eto. 521 00:28:14,430 --> 00:28:17,800 Ni allaf ddweud * t yn cael * s. 522 00:28:17,800 --> 00:28:19,440 Oherwydd yr hyn y byddwn yn ei wneud felly? 523 00:28:19,440 --> 00:28:22,950 Byddwn yn rhoi h, h, h, h, h drwy gydol yr holl beth. 524 00:28:22,950 --> 00:28:22,995 Iawn? 525 00:28:22,995 --> 00:28:26,020 >> Oherwydd * t yn mynd i'r cyfeiriad yn y t. 526 00:28:26,020 --> 00:28:27,580 Ond rydym yn tu mewn i ddolen. 527 00:28:27,580 --> 00:28:32,150 A beth gwerth ydw i'n incrementing, wrth gwrs, ar bob fersiwn? 528 00:28:32,150 --> 00:28:32,690 i. 529 00:28:32,690 --> 00:28:34,590 >> Ond mae 'na gyfle yma, dde? 530 00:28:34,590 --> 00:28:37,870 Er bod hwn yn teimlo fel ei fod yn cael ychydig yn fwy soffistigedig 531 00:28:37,870 --> 00:28:40,730 na'r nodiant sgwâr-braced rydym wedi defnyddio ers peth amser - 532 00:28:40,730 --> 00:28:43,840 gadewch i mi newid fy dadwneud h yno - 533 00:28:43,840 --> 00:28:48,870 er bod hyn yn awr yn cael ychydig yn ffansi, y syniad sylfaenol, os * t 534 00:28:48,870 --> 00:28:53,630 yn golygu yma ac * t yn unig mynd i'r cyfeiriad yn y t. 535 00:28:53,630 --> 00:28:54,990 >> Ond beth oedd y cyfeiriad yn t? 536 00:28:54,990 --> 00:28:56,850 Mae nifer yn cadw defnyddio? 537 00:28:56,850 --> 00:29:00,540 Fel Ox456, gadewch i ni ddod â hynny yn ôl dim ond er mwyn y drafodaeth. 538 00:29:00,540 --> 00:29:05,380 Wel, os wyf am i gyrraedd y e yn t llinyn, Fi jyst eisiau mynd i, 539 00:29:05,380 --> 00:29:06,460 yn y bôn, 456. 540 00:29:06,460 --> 00:29:09,230 >> Neu yn hytrach, 457. 541 00:29:09,230 --> 00:29:10,590 Fi jyst angen i ychwanegu un. 542 00:29:10,590 --> 00:29:11,790 Ond gallaf wneud hynny, dde? 543 00:29:11,790 --> 00:29:14,680 Oherwydd t, hyd yn oed er fy mod yn cadw tynnu yn awr fel saeth, dim ond yn 544 00:29:14,680 --> 00:29:16,570 rhif, Ox456. 545 00:29:16,570 --> 00:29:21,400 Ac os ydw i'n ychwanegu un at hynny, neu fwy yn gyffredinol, os wyf yn ychwanegu i mi y gallaf 546 00:29:21,400 --> 00:29:24,350 mewn gwirionedd yn cael yn union ble rwyf eisiau. 547 00:29:24,350 --> 00:29:26,260 Felly os wyf yn ei wneud mewn gwirionedd hyn - 548 00:29:26,260 --> 00:29:28,970 ac mae hyn yn beth a elwir bellach yn rhifyddeg pwyntydd - 549 00:29:28,970 --> 00:29:30,375 I gael gwared ar y llinell hon. 550 00:29:30,375 --> 00:29:33,550 Pa un yw, dweud y gwir, yr wyf yn meddwl yn gliriach ac gyfeillgar ychydig mwy o ddefnyddwyr i ddarllen. 551 00:29:33,550 --> 00:29:35,970 Ond nid yw hyn yn llai cywir. 552 00:29:35,970 --> 00:29:38,570 >> Mae'r llinell o god bellach yn defnyddio rhifyddeg pwyntydd. 553 00:29:38,570 --> 00:29:40,920 Mae'n dweud yn mynd i'r yn dilyn cyfeiriad - 554 00:29:40,920 --> 00:29:44,670 beth bynnag dechrau t yw, pa yn t yn ogystal i, sydd i ddechrau 555 00:29:44,670 --> 00:29:45,730 yn 0, sy'n wych. 556 00:29:45,730 --> 00:29:49,280 Oherwydd bod hynny'n golygu dechrau t ynghyd ag 1, a 2, a 3, ac yn y blaen. 557 00:29:49,280 --> 00:29:51,030 Ac mae'r un peth yn delio â s. 558 00:29:51,030 --> 00:29:52,750 >> Felly siwgr cystrawennol ar gyfer hyn. 559 00:29:52,750 --> 00:29:55,900 Ond deall yr hyn sy'n digwydd mewn gwirionedd o dan y cwfl, byddwn yn dadlau, 560 00:29:55,900 --> 00:29:57,410 mewn gwirionedd yn ddefnyddiol mewn ac o ei hun. 561 00:29:57,410 --> 00:30:00,620 Oherwydd ei fod yn golygu yn awr nid oes llawer mwy o hud yn mynd ymlaen 562 00:30:00,620 --> 00:30:01,620 o dan y cwfl. 563 00:30:01,620 --> 00:30:03,920 Nid oes yn mynd i fod yn llawer mwy haenau y gallwn croen yn ôl i chi. 564 00:30:03,920 --> 00:30:04,810 Mae hyn yn c. 565 00:30:04,810 --> 00:30:06,410 Ac mae hyn yn cael ei rhaglennu. 566 00:30:06,410 --> 00:30:08,002 Cwestiwn da iawn. 567 00:30:08,002 --> 00:30:11,570 >> Mae pob hawl, felly roedd hwn yn y bygi rhaglen oeddwn yn cyfeirio ato yn gynharach. 568 00:30:11,570 --> 00:30:12,650 cyfnewid yn ddiffygiol. 569 00:30:12,650 --> 00:30:14,070 Os oedd yn ymddangos i weithio. 570 00:30:14,070 --> 00:30:17,390 Dwyn i gof bod yn union fel gyda'r llaeth a y sudd oren - yr wyf yn dechrau 571 00:30:17,390 --> 00:30:18,660 yfed arddangos heddiw. 572 00:30:18,660 --> 00:30:22,220 Felly, yn union fel yn achos y sudd ac oren y llaeth, oedd rhaid i ni ddefnyddio 573 00:30:22,220 --> 00:30:26,200 amrywio dros dro, tmp, i gynnal dros dro fel y gallem wedyn 574 00:30:26,200 --> 00:30:28,820 newid ei werth ac yna diweddaru b. 575 00:30:28,820 --> 00:30:32,870 >> Ond y swyddogaeth hon, dywedasom, neu hyn yn rhaglen lle swyddogaeth hon yn 576 00:30:32,870 --> 00:30:35,670 ysgrifenedig yn anghywir ac yn ddiffygiol, pam? 577 00:30:35,670 --> 00:30:38,870 578 00:30:38,870 --> 00:30:39,090 Ie? 579 00:30:39,090 --> 00:30:42,471 >> GYNULLEIDFA: [Anghlywadwy]. 580 00:30:42,471 --> 00:30:44,940 >> SIARADWR 1: Yn union, pan byddwch yn ffonio cyfnewid - 581 00:30:44,940 --> 00:30:47,820 neu yn fwy cyffredinol, pan fyddwch yn alw rhan fwyaf o unrhyw swyddogaeth - 582 00:30:47,820 --> 00:30:51,210 os bydd y dadleuon i swyddogaeth honno yn cyntefig, fel petai, ints a chars 583 00:30:51,210 --> 00:30:56,740 a dyblau a fflotiau, pethau heb sêr, rydych yn pasio copi o 584 00:30:56,740 --> 00:30:57,540 y ddadl. 585 00:30:57,540 --> 00:31:01,580 Felly os oedd 1 x ac y yn 2, mae yn mynd i fod yn 1 a b yn mynd i fod yn 2. 586 00:31:01,580 --> 00:31:05,250 Ond maen nhw'n mynd i fod yn wahanol darnau o ddarnau, darnau gwahanol o 587 00:31:05,250 --> 00:31:07,540 cof sy'n digwydd i gael ei storio gwerthoedd union yr un fath. 588 00:31:07,540 --> 00:31:12,160 >> Felly, y cod yn super perffaith ar gyfnewid a a b. 589 00:31:12,160 --> 00:31:13,850 Mae'n dda i ddim am gyfnewid - 590 00:31:13,850 --> 00:31:15,290 yn yr enghraifft yr wythnos diwethaf - 591 00:31:15,290 --> 00:31:16,390 x ac y. 592 00:31:16,390 --> 00:31:18,780 Oherwydd unwaith eto, maent yn yn y cwmpas anghywir. 593 00:31:18,780 --> 00:31:21,310 >> Nawr, sut oedd yn mynd ati i osod hyn? 594 00:31:21,310 --> 00:31:23,140 Bu'n rhaid i ni wneud y swyddogaeth edrych ychydig yn uglier. 595 00:31:23,140 --> 00:31:25,250 Ond unwaith eto, ystyried pa mae hyn yn unig yn golygu. 596 00:31:25,250 --> 00:31:27,840 597 00:31:27,840 --> 00:31:31,500 >> Ac mewn gwirionedd, gadewch i mi, er cysondeb, newid un peth felly mae'n union yr un fath 598 00:31:31,500 --> 00:31:33,200 beth yn union a wnaethom. 599 00:31:33,200 --> 00:31:35,690 Fel y soniais yr wythnos diwethaf, nid yw'n waeth ble y mae'n mynd. 600 00:31:35,690 --> 00:31:38,120 Yn wir, fel arfer byddech yn rhoi'r seren nesaf at yr enw amrywiol. 601 00:31:38,120 --> 00:31:40,750 Ond yr wyf yn credu y byddai'n ychydig yn haws i ystyried y * wrth ymyl y 602 00:31:40,750 --> 00:31:44,910 math data i olygu ei fod yn pwyntydd i int yn yr achos hwn. 603 00:31:44,910 --> 00:31:46,270 >> Felly, beth ydw i'n ei wneud yma? 604 00:31:46,270 --> 00:31:49,590 I ddim yn dweud peidiwch â rhoi int i mi ddilyn gan int arall, 605 00:31:49,590 --> 00:31:50,810 iddynt a b galw. 606 00:31:50,810 --> 00:31:52,460 Rhowch gyfeiriad o int mi. 607 00:31:52,460 --> 00:31:53,960 Rhowch y cyfeiriad y int arall i mi. 608 00:31:53,960 --> 00:31:56,330 Ffoniwch y rhai yn mynd i'r afael a a b. 609 00:31:56,330 --> 00:32:00,860 >> Ac yna defnyddio'r nodiant i lawr * isod, ewch i bob un o'r cyfeiriadau hynny 610 00:32:00,860 --> 00:32:05,290 yn ôl yr angen i naill ai gael neu gosod ei werth. 611 00:32:05,290 --> 00:32:07,400 Ond mae eithriad yma. 612 00:32:07,400 --> 00:32:11,130 Pam nad oes gen i * nesaf i tmp? 613 00:32:11,130 --> 00:32:15,070 Pam nad ydw i'n gwneud hyn, er enghraifft? 614 00:32:15,070 --> 00:32:19,370 Mae'n teimlo fel dylwn i jyst yn mynd yr holl allan a chywiro yr holl beth. 615 00:32:19,370 --> 00:32:19,752 Yeah? 616 00:32:19,752 --> 00:32:21,002 >> GYNULLEIDFA: [Anghlywadwy]. 617 00:32:21,002 --> 00:32:23,280 618 00:32:23,280 --> 00:32:25,480 >> SIARADWR 1: Nid wyf wedi datgan tmp fel llinyn. 619 00:32:25,480 --> 00:32:28,830 620 00:32:28,830 --> 00:32:34,950 Felly, byddai hyn yn datgan, yn yr achos hwn, a tmp i fod yn y cyfeiriad o int. 621 00:32:34,950 --> 00:32:37,380 Ond nid yw hynny'n hollol yr hyn yr wyf am ei gael, am ychydig o resymau. 622 00:32:37,380 --> 00:32:38,616 >> GYNULLEIDFA: Nid ydych am i gyfnewid eu cyfer. 623 00:32:38,616 --> 00:32:41,800 >> SIARADWR 1: Yn union, nid wyf am i gyfnewid unrhyw beth sydd â tmp. tmp yn unig 624 00:32:41,800 --> 00:32:42,790 wythnos-un pethau. 625 00:32:42,790 --> 00:32:45,150 Y cyfan yr wyf eisiau yw newidyn i storio rhywfaint rhif. 626 00:32:45,150 --> 00:32:47,330 Dydw i ddim hyd yn oed yn poeni am gyfeiriadau ar hyn o bryd. 627 00:32:47,330 --> 00:32:50,530 >> Fi jyst angen 32 o ddarnau neu felly er mwyn storio yn int. 628 00:32:50,530 --> 00:32:56,690 Ac yr wyf am roi yn y rhai 32 darnau Nid beth bynnag sydd mewn, fel petai, ond 629 00:32:56,690 --> 00:33:01,260 yr hyn sydd ar, dim ond i fod yn fwy manwl gywir. 630 00:33:01,260 --> 00:33:06,420 Oherwydd os yw yn gyfeiriad, * yn golygu mynd yno a chael y gwerth 1. 631 00:33:06,420 --> 00:33:10,560 Er enghraifft, yn yr enghraifft yr wythnos diwethaf neu b yn achos, yn cael y gwerth 2. 632 00:33:10,560 --> 00:33:11,750 >> Felly, beth sy'n digwydd mewn gwirionedd? 633 00:33:11,750 --> 00:33:15,070 Gadewch i mi dynnu llun yma a fydd yn Dim ond canfod ar wahân yn rhan o heddiw. 634 00:33:15,070 --> 00:33:18,580 Ond bydd hyn yn parhau i ymddangos ers peth amser. 635 00:33:18,580 --> 00:33:22,430 >> Mae hyn, yr wyf yn gwneud cais, yw'r hyn y mae eich cyfrifiadur cof yn edrych fel pan fyddwch yn rhedeg yn 636 00:33:22,430 --> 00:33:24,060 rhaglen, unrhyw raglen. 637 00:33:24,060 --> 00:33:28,340 Pan fyddwch yn rhedeg rhaglen ar frig o RAM eich cyfrifiadur - felly meddyliwch am 638 00:33:28,340 --> 00:33:33,530 petryal hwn, yn wir, fel eich RAM neu gof cyfrifiadur, pob 101 639 00:33:33,530 --> 00:33:36,920 biliwn bytes ohono, pob ddau biliwn bytes, pob dau gigabeit ohono, 640 00:33:36,920 --> 00:33:39,910 beth bynnag yw'r swm sydd gennych, gadewch i ni dynnu fel petryal. 641 00:33:39,910 --> 00:33:43,260 Ac yr wyf yn honni bod pan fyddwch yn rhedeg rhaglen fel Microsoft Word neu Chrome 642 00:33:43,260 --> 00:33:49,220 neu unrhyw beth fel 'na, y darnau sy'n Microsoft neu Google ysgrifennodd - 643 00:33:49,220 --> 00:33:50,910 yn yr achosion y rhaglenni hynny - 644 00:33:50,910 --> 00:33:54,490 yn cael eu llwytho i mewn i gof eich cyfrifiadur lle y gallant gael eu gweithredu yn fwy 645 00:33:54,490 --> 00:33:57,520 yn gyflym ac yn bwydo i mewn i'r CPU, a yw ymennydd y cyfrifiadur. 646 00:33:57,520 --> 00:34:00,940 >> Ac yn TAM maent yn cael eu storio ar yr union ben eich rhaglen, fel petai. 647 00:34:00,940 --> 00:34:03,300 Mewn geiriau eraill, os yw hyn yn ddarn o cof, pan fyddwch yn clicio ddwywaith ar 648 00:34:03,300 --> 00:34:05,740 Microsoft Word, y darnau yn dod oddi ar y disg caled. 649 00:34:05,740 --> 00:34:06,680 Maent yn cael eu llwytho i mewn i RAM. 650 00:34:06,680 --> 00:34:10,330 A byddwn yn gwthio i fyny ar frig y petryal gysyniadol. 651 00:34:10,330 --> 00:34:13,010 >> Wel, mae'r gweddill eich cof defnyddio ar gyfer gwahanol bethau. 652 00:34:13,010 --> 00:34:16,460 Ar frig iawn eich gweld ymgychwyn data a uninitialize data. 653 00:34:16,460 --> 00:34:20,500 Mae hyn wedi ei wneud, ar gyfer y rhan fwyaf, gyda Cysonion neu newidynnau byd-eang 654 00:34:20,500 --> 00:34:21,340 sydd â gwerthoedd. 655 00:34:21,340 --> 00:34:22,980 Ond yn fwy ar y rhai adeg arall. 656 00:34:22,980 --> 00:34:25,150 >> Yna byddwch yn cael y domen, sy'n byddwn yn dod yn ôl ato. 657 00:34:25,150 --> 00:34:28,420 Ond ar y gwaelod yw'r rhan sy'n yn enwedig germane ar hyn o bryd. 658 00:34:28,420 --> 00:34:30,210 Mae'n y pentwr fel y'u gelwir. 659 00:34:30,210 --> 00:34:33,850 Felly, yn union fel yn y rhan fwyaf o unrhyw neuadd D yma ar campws, mae gennych hambyrddau hynny sy'n 660 00:34:33,850 --> 00:34:37,210 dim ond pentwr ar ben ei gilydd y gallwch roi bwyd a whatnot. 661 00:34:37,210 --> 00:34:40,139 Mae'r stac mewn system gyfrifiadurol yn debyg iawn. 662 00:34:40,139 --> 00:34:42,679 Ac eithrio tra bod yr hambwrdd, fel yr ydym yn eu defnyddio yn y neuadd fwyta, wrth gwrs, yn golygu 663 00:34:42,679 --> 00:34:45,710 i gario pethau y hambyrddau neu y fframiau - 664 00:34:45,710 --> 00:34:49,469 fel y byddwn yn eu galw - mewn cyfrifiadur cof yn cael ei defnyddio i ddal 665 00:34:49,469 --> 00:34:51,610 newidynnau a gwerthoedd. 666 00:34:51,610 --> 00:34:53,929 >> Felly, beth sydd wir yn mynd ymlaen o dan y cwfl? 667 00:34:53,929 --> 00:34:55,820 Wel, gadewch i mi troi drosodd i'r sgrin yma. 668 00:34:55,820 --> 00:34:58,370 A gadewch i ni ganolbwyntio ar y rhan gwaelod am eiliad. 669 00:34:58,370 --> 00:35:02,770 Os yw hyn yn y rhan waelod fy cof cyfrifiadur mae'n troi allan pan fyddaf yn 670 00:35:02,770 --> 00:35:05,350 ffoniwch y brif swyddogaeth - sy'n digwydd, a dweud y gwir, 671 00:35:05,350 --> 00:35:06,950 awtomatig i mi - 672 00:35:06,950 --> 00:35:10,510 Rwy'n cael darn o gof yn y waelod fy RAM fel petai. 673 00:35:10,510 --> 00:35:13,390 A dyma lle brif yn newidynnau lleol yn mynd. 674 00:35:13,390 --> 00:35:16,770 Mae'n lle argc a argv efallai fynd, ac unrhyw newidynnau I 675 00:35:16,770 --> 00:35:18,170 datgan y tu mewn o brif. 676 00:35:18,170 --> 00:35:20,260 Maent yn y pen draw ar y gwaelod o RAM fy cyfrifiadur. 677 00:35:20,260 --> 00:35:25,040 >> Nawr mae'n debyg mai prif galwadau swyddogaeth fel cyfnewid, fel y gwnaeth yr wythnos diwethaf? 678 00:35:25,040 --> 00:35:30,620 Wel, rydym yn y bôn yn rhoi hambwrdd newydd, ffrâm newydd, ar fy darn o gof. 679 00:35:30,620 --> 00:35:34,160 Ac yr wyf i'n mynd i ddisgrifio'r hyn fel perthyn i'r swyddogaeth cyfnewid. 680 00:35:34,160 --> 00:35:35,770 >> Nawr beth sydd y tu mewn y cyfnewid? 681 00:35:35,770 --> 00:35:39,240 Wel, yn seiliedig ar y rhaglen yr wythnos ddiwethaf a yr un yr ydym jyst yn gweld darn o, 682 00:35:39,240 --> 00:35:46,590 tu mewn ffrâm cyfnewid yn, neu ar y cyfnewid yn hambwrdd, yw'r hyn y newidynnau? 683 00:35:46,590 --> 00:35:47,970 Wel, a a b. 684 00:35:47,970 --> 00:35:51,850 Oherwydd dyna oedd ei ddadleuon lleol, yn ogystal â drydydd, tmp. 685 00:35:51,850 --> 00:35:54,470 Felly mewn gwirionedd, gallwn dynnu hyn ychydig yn fwy lân. 686 00:35:54,470 --> 00:35:56,680 Gadewch i mi fynd yn ei flaen ac yn dadwneud y label. 687 00:35:56,680 --> 00:35:58,520 A gadewch i mi honni eich bod yn gwybod beth? 688 00:35:58,520 --> 00:36:00,560 >> yn ôl pob tebyg yn mynd i roi diwedd ar i fyny yma. 689 00:36:00,560 --> 00:36:02,160 B yn mynd i roi diwedd ar i fyny yma. 690 00:36:02,160 --> 00:36:03,810 Ac tmp yn mynd i roi diwedd ar i fyny yma. 691 00:36:03,810 --> 00:36:05,160 Yn awr, gallai'r archebu ychydig yn wahanol. 692 00:36:05,160 --> 00:36:06,840 Ond gysyniadol dyma'r syniad. 693 00:36:06,840 --> 00:36:11,490 >> A dim ond ar y cyd, mae hyn yn beth byddwn yn galw ffrâm cyfnewid, neu'n 694 00:36:11,490 --> 00:36:12,136 hambwrdd fwyta-neuadd. 695 00:36:12,136 --> 00:36:13,150 Ac mae'r un peth yn delio â phrif. 696 00:36:13,150 --> 00:36:14,040 Ond ni fyddaf yn ail-lunio hynny. 697 00:36:14,040 --> 00:36:17,810 Ond dyna lle argc a argv ac unrhyw o'i newidynnau lleol fel x ac y 698 00:36:17,810 --> 00:36:18,940 gallai fod yn ogystal. 699 00:36:18,940 --> 00:36:22,170 >> Felly, yn awr yn ystyried beth sy'n digwydd mewn gwirionedd pan fyddwch yn ffonio cyfnewid. 700 00:36:22,170 --> 00:36:26,370 Pan fyddwch yn ffonio cyfnewid, gweithredu cod fel hyn, rydych yn pasio i mewn, yn y 701 00:36:26,370 --> 00:36:30,670 fersiwn buggy, a a b fel copïau o x ac y. 702 00:36:30,670 --> 00:36:34,300 Felly, os yn awr yr wyf yn tynnu hyn ar y sgrin - 703 00:36:34,300 --> 00:36:36,700 rhaid i wella ar hyn - 704 00:36:36,700 --> 00:36:40,850 felly y stori roeddwn yn dweud i mi fy hun oedd yn y fersiwn bygi, pan fyddwn yn 705 00:36:40,850 --> 00:36:46,130 ffoniwch gyfnewid pasio mewn llythrennol a a b fel cyfanrifau, beth sy'n digwydd mewn gwirionedd? 706 00:36:46,130 --> 00:36:48,250 >> Wel, beth sy'n digwydd mewn gwirionedd yw hyn. 707 00:36:48,250 --> 00:36:52,850 Gadewch i mi fynd yn ei flaen ac yn dadwneud yn unig i glirio i fyny ychydig o le yma. 708 00:36:52,850 --> 00:36:54,720 Felly, mae hyn yn fy cof cyfrifiadur. 709 00:36:54,720 --> 00:36:57,510 >> Felly, os oes gen i, er enghraifft - 710 00:36:57,510 --> 00:36:58,910 mewn gwirionedd gadewch i ni wneud fel hyn - 711 00:36:58,910 --> 00:37:02,690 os wyf yn honni bod hyn yn x, storio gwerth 1 yn union fel yr wythnos diwethaf. 712 00:37:02,690 --> 00:37:05,930 Ac mae hyn yn y, storio gwerth 2 yn union fel yr wythnos diwethaf. 713 00:37:05,930 --> 00:37:11,370 Ac mae hyn yn bennaf, pan fyddaf yn galw cyfnewid, gan roi mynediad i fy hun ac 714 00:37:11,370 --> 00:37:15,150 b a tmp, yr wyf i'n mynd i honni bod mae hwn yn ac mae hyn yn 1. 715 00:37:15,150 --> 00:37:16,080 >> Mae hyn yn b. 716 00:37:16,080 --> 00:37:17,010 Mae hyn 2. 717 00:37:17,010 --> 00:37:18,370 Gelwir hyn yn tmp. 718 00:37:18,370 --> 00:37:23,360 >> Ac ar y dechrau, mae wedi rhywfaint o werth garbage nes i mi mewn gwirionedd yn storio ynddo, 719 00:37:23,360 --> 00:37:24,450 sef 1. 720 00:37:24,450 --> 00:37:28,320 Yna mi fynd yn ei flaen a newid a i fod yn beth? 721 00:37:28,320 --> 00:37:29,720 Werth B. 722 00:37:29,720 --> 00:37:31,980 >> Ac felly yn awr yr wyf yn ddau yma. 723 00:37:31,980 --> 00:37:34,050 Ac yna rydym yn dweud b yn cael tmp. 724 00:37:34,050 --> 00:37:37,670 Unwaith eto, dim ond fel bwyll gwirio, y trydydd llinell o god yma, yn syml, mae hyn 725 00:37:37,670 --> 00:37:39,440 un, b yn cael tmp. 726 00:37:39,440 --> 00:37:41,730 >> Ac felly yn olaf, beth ddylwn i ei wneud? 727 00:37:41,730 --> 00:37:46,800 Rwy'n mynd yn ei flaen a newid b i fod beth bynnag gwerth tmp yw, sydd 1. 728 00:37:46,800 --> 00:37:48,390 Nid wyf yn cyffwrdd tmp eto. 729 00:37:48,390 --> 00:37:54,100 >> Ond yn awr, y broblem yw cyn gynted ag y cyfnewid ffurflenni, gan nad yw'n trosglwyddo 730 00:37:54,100 --> 00:37:57,540 yn ôl rhywfaint o werth, does dim dychwelyd datganiad eglur ynddo. 731 00:37:57,540 --> 00:37:59,080 Beth sy'n digwydd mewn gwirionedd? 732 00:37:59,080 --> 00:38:03,480 Wel, yn y bôn yr holl atgof hwn - 733 00:38:03,480 --> 00:38:07,410 OK, mae'n debyg y rhwbiwr yn hoffi dim ond un bys ar y tro - 734 00:38:07,410 --> 00:38:08,180 yn unig yn diflannu. 735 00:38:08,180 --> 00:38:10,070 >> Nawr, mewn gwirionedd nid yw'n mynd yn unrhyw le. 736 00:38:10,070 --> 00:38:11,810 Ond gallwch feddwl am y peth nawr fel marciau cwestiwn. 737 00:38:11,810 --> 00:38:14,040 Oherwydd ei fod bellach yn mewn gwirionedd yn cael eu defnyddio. 738 00:38:14,040 --> 00:38:17,470 A dim byd yn cael ei wneud â gwerthoedd hynny. 739 00:38:17,470 --> 00:38:21,920 >> Felly, yn achos y fersiwn gwyrdd cod hwn, beth yn lle hynny yn cael ei 740 00:38:21,920 --> 00:38:24,640 basio i mewn i cyfnewid? 741 00:38:24,640 --> 00:38:25,770 Felly, yn mynd i'r afael. 742 00:38:25,770 --> 00:38:28,520 Felly, y cyfeiriad x a y cyfeiriad y. 743 00:38:28,520 --> 00:38:35,790 Felly, os byddwn yn ail-adrodd y stori hon yr un olaf ei amser, ac yr wyf mewn gwirionedd yn tynnu cyfnewid eto, 744 00:38:35,790 --> 00:38:44,620 ond gyda awgrymiadau, bod hyn yn, mae hyn yn bod yn b, ac mae hyn yn cael ei tmp, beth yw 745 00:38:44,620 --> 00:38:49,080 storio mewn gwirionedd mewn yn y gwyrdd fersiwn o fy cod lle rwyf i'n pasio 746 00:38:49,080 --> 00:38:52,110 mewn cyfeiriadau? 747 00:38:52,110 --> 00:38:53,780 >> Mae'n mynd i fod yn pwyntydd i x. 748 00:38:53,780 --> 00:38:54,890 Er mwyn i mi dynnu saeth. 749 00:38:54,890 --> 00:38:57,310 Ond gadewch i ni ddefnyddio'r un mympwyol enghraifft, fel o'r blaen. 750 00:38:57,310 --> 00:39:01,220 Gadewch i ni yn dweud bod hyn yn rhywbeth fel Ox123. 751 00:39:01,220 --> 00:39:04,970 Ac mae hyn yn mynd i fod Ox127 oherwydd 'i' pedwar bytes i ffwrdd oherwydd ei fod yn 752 00:39:04,970 --> 00:39:07,370 int, felly Ox127. 753 00:39:07,370 --> 00:39:09,080 >> Ac eto, yr wyf i'n cymryd rhai rhyddid gyda'r niferoedd. 754 00:39:09,080 --> 00:39:11,430 Maent yn llawer llai nag y byddent mewn gwirionedd fod ac mewn trefn wahanol. 755 00:39:11,430 --> 00:39:14,350 Ond dyna sut y llun yn wahanol yn awr. 756 00:39:14,350 --> 00:39:19,060 >> Ond pan fyddaf yn defnyddio'r cod hwn gwyrdd ac yr wyf yn tmp int gael * a. 757 00:39:19,060 --> 00:39:25,010 * Yn fodd i wneud y canlynol, yn cymryd y afael â hynny yw mewn ac yn mynd iddo, 758 00:39:25,010 --> 00:39:26,190 sef 1. 759 00:39:26,190 --> 00:39:28,480 A dyna beth yr wyf yna rhowch mewn tmp. 760 00:39:28,480 --> 00:39:32,480 Yn y cyfamser, yn y llinell nesaf o god yma, * yn cael b, beth mae hynny'n ei olygu? 761 00:39:32,480 --> 00:39:36,910 >> Wel, * yn, felly ewch yma yn cael * b, sy'n golygu mynd yno. 762 00:39:36,910 --> 00:39:39,310 Ac mae hynny'n golygu rhoi'r gwerth i yno. 763 00:39:39,310 --> 00:39:43,670 Yn olaf, mae'r llinell olaf o god dim ond dweud * b yn cael tmp. 764 00:39:43,670 --> 00:39:48,900 >> Felly, b yn dweud yn mynd yno ac yn ysgrifennu drosti gyda tmp sydd, yn yr achos hwn, yn mynd 765 00:39:48,900 --> 00:39:51,520 i fod, unwaith eto, 1. 766 00:39:51,520 --> 00:39:54,920 A dyna pam y fersiwn gwyrdd ein gweithfeydd cod, tra bod y coch 767 00:39:54,920 --> 00:39:56,010 fersiwn byth yn gwneud. 768 00:39:56,010 --> 00:39:59,020 Mae i gyd yn unig boils i lawr i sut y mae'r cof yn cael ei rheoli a ble y mae'n 769 00:39:59,020 --> 00:40:02,580 sefyllfa mewn gwirionedd yn eich RAM cyfrifiadur. 770 00:40:02,580 --> 00:40:07,270 Ac am y tro, dyna un o'r pethau bod y pentwr yn cael ei ddefnyddio ar gyfer. 771 00:40:07,270 --> 00:40:09,225 >> Cwestiynau am y cynllun? 772 00:40:09,225 --> 00:40:10,380 Ar awgrymiadau? 773 00:40:10,380 --> 00:40:11,630 Neu ar y cyfnewid? 774 00:40:11,630 --> 00:40:13,740 775 00:40:13,740 --> 00:40:17,043 >> Mae pob hawl, felly malloc, galw i gof, gwneud rhywbeth fel hyn. 776 00:40:17,043 --> 00:40:18,260 Roedd hon yn enghraifft super syml. 777 00:40:18,260 --> 00:40:20,550 A hyn oedd yr un a Binky gyflwyno i ni, er yn eithaf 778 00:40:20,550 --> 00:40:21,870 yn gyflym, ar ddiwedd y dosbarth. 779 00:40:21,870 --> 00:40:24,480 Dammit, yna rydym yn mynd eto. 780 00:40:24,480 --> 00:40:28,780 >> Felly, yn cofio mai hwn oedd yr enghraifft a Cyflwynodd Binky ni wneud hynny, er 781 00:40:28,780 --> 00:40:30,360 braidd yn gyflym ar ddiwedd y dosbarth. 782 00:40:30,360 --> 00:40:33,640 A dyma ni ddefnyddio malloc mewn gwirionedd am yr ail dro. 783 00:40:33,640 --> 00:40:37,330 Oherwydd bod y tro cyntaf i ni ei ddefnyddio i creu digon o RAM, yn dyrannu digon o RAM 784 00:40:37,330 --> 00:40:38,340 i storio llinyn. 785 00:40:38,340 --> 00:40:40,250 >> Binky cadw y tro hwn syml. 786 00:40:40,250 --> 00:40:42,465 Felly mae'n storio yn unig yn int, mae'n debyg. 787 00:40:42,465 --> 00:40:43,510 Ac mae hynny'n hollol iawn. 788 00:40:43,510 --> 00:40:46,560 Mae'n ychydig yn od, a dweud y gwir, i defnyddio malloc i ddyrannu un int. 789 00:40:46,560 --> 00:40:50,650 Ond y pwynt o animeiddio clai Nick oedd mewn gwirionedd dim ond adrodd hanes yr hyn a 790 00:40:50,650 --> 00:40:53,830 digwydd neu nad yw'n digwydd pan eich cam-drin cof. 791 00:40:53,830 --> 00:40:56,520 >> Felly, yn yr achos hwn, mae'r rhaglen hon gwnaeth ychydig o bethau. 792 00:40:56,520 --> 00:41:01,580 Yn yr achos cyntaf yma, mae'n datgan pwyntydd enw x i int. 793 00:41:01,580 --> 00:41:04,480 Mae wedyn yn datgan pwyntydd Gelwir y i int. 794 00:41:04,480 --> 00:41:06,150 Yna mae'n storio yn x, beth? 795 00:41:06,150 --> 00:41:07,110 Rhywun arall yn awr. 796 00:41:07,110 --> 00:41:09,685 Beth sy'n cael ei storio mewn x yn ôl y drydedd linell y rhaglen hon? 797 00:41:09,685 --> 00:41:12,380 >> GYNULLEIDFA: [Anghlywadwy]. 798 00:41:12,380 --> 00:41:14,130 >> SIARADWR 1: Wel, nid yn eithaf bytes, fesul ddweud. 799 00:41:14,130 --> 00:41:16,760 Bod yn fwy manwl yn awr. 800 00:41:16,760 --> 00:41:18,325 Beth sy'n cael ei storio mewn x? 801 00:41:18,325 --> 00:41:21,000 802 00:41:21,000 --> 00:41:22,060 Cyfeiriad, yr wyf yn meddwl fy mod wedi clywed amdano. 803 00:41:22,060 --> 00:41:23,570 >> Felly beth mae malloc dychwelyd? 804 00:41:23,570 --> 00:41:26,030 malloc behaviorally dyrannu darn o gof. 805 00:41:26,030 --> 00:41:27,850 Ond sut mae'n rhoi mynediad iddo? 806 00:41:27,850 --> 00:41:29,460 Mae'n dychwelyd beth? 807 00:41:29,460 --> 00:41:32,000 Cyfeiriad y beit cyntaf yn y darn o gof. 808 00:41:32,000 --> 00:41:33,020 >> Yn awr, mae hyn yn syml super. 809 00:41:33,020 --> 00:41:35,380 Dim ond un beit, sy'n golygu bod y mynd i'r afael rydym yn mynd yn ôl y 810 00:41:35,380 --> 00:41:37,300 cyfeiriad yr holl beth. 811 00:41:37,300 --> 00:41:42,070 Felly storio mewn x, yna, yn y cyfeiriad y darn o gof. 812 00:41:42,070 --> 00:41:43,400 Yn y cyfamser, beth sy'n digwydd nesaf? 813 00:41:43,400 --> 00:41:45,890 Felly, mewn gwirionedd, gadewch i ni fynd yn ei flaen a dynnu allan yn gyflym go iawn. 814 00:41:45,890 --> 00:41:52,490 >> Felly, os ydym yn mynd draw at y sgrin yma ac rydym yn chwarae y tu allan int * x ac int * y 815 00:41:52,490 --> 00:41:53,740 yn mynd i wneud beth i mi? 816 00:41:53,740 --> 00:41:58,280 Yr wyf yn honni ei fod yn jyst yn mynd i wneud rhywbeth fel hyn a galw yn x, a 817 00:41:58,280 --> 00:42:00,010 hyn a galw yn y. 818 00:42:00,010 --> 00:42:03,110 Yn y cyfamser, y drydedd linell o god yn mynd i ddyrannu faint o int, 819 00:42:03,110 --> 00:42:06,160 sy'n digwydd bod - mae'n ddrwg gennyf os wyf yn dweud un cyn i mi yn golygu un int - 820 00:42:06,160 --> 00:42:08,280 pedwar bytes ar gyfrifiadur nodweddiadol. 821 00:42:08,280 --> 00:42:09,720 O leiaf gyda'r CS50 offer. 822 00:42:09,720 --> 00:42:11,490 >> Felly, mae hyn yn mynd i ddyrannu hynny, pwy a ŵyr? 823 00:42:11,490 --> 00:42:12,800 Rhywle allan yma. 824 00:42:12,800 --> 00:42:15,780 Ac mae hyn yn cael ei storio mewn rhai gyfeiriad Ych, pwy a ŵyr? 825 00:42:15,780 --> 00:42:18,330 Ond beth sy'n mynd i gael eu dychwelyd yn y cyfeiriad hwnnw. 826 00:42:18,330 --> 00:42:22,270 Ond byddwn yn tynnu lluniau hyn fel dim ond saeth fel 'na. 827 00:42:22,270 --> 00:42:25,430 >> Nawr yn y llinell nesaf * x yn cael 42. 828 00:42:25,430 --> 00:42:29,400 Beth mae * x olygu mewn termau lleyg? 829 00:42:29,400 --> 00:42:30,040 Dim ond yn mynd yno. 830 00:42:30,040 --> 00:42:30,960 Ewch i'r cyfeiriad hwnnw. 831 00:42:30,960 --> 00:42:35,900 Neu mewn geiriau eraill, dilynwch y saeth ac yn rhoi 42 yno. 832 00:42:35,900 --> 00:42:38,140 Ond yna rhywbeth drwg yn digwydd i Binky, dde? 833 00:42:38,140 --> 00:42:43,950 >> Dwyn i gof bod pum llinell yma, * yn cael y 13, yn wir mae nifer anlwcus, 834 00:42:43,950 --> 00:42:44,760 gwneud yr hyn i ni? 835 00:42:44,760 --> 00:42:47,320 Wel, * y modd mynd yno. 836 00:42:47,320 --> 00:42:50,460 Wel, nid yw hyn wedi ei roi gwerth hyd yn hyn, dde? 837 00:42:50,460 --> 00:42:54,090 Nid oes gan y cod y cael ei ymgychwyn i unrhyw beth. 838 00:42:54,090 --> 00:42:56,120 Roeddem wedi x yn cael eu ymgychwyn i gyfeiriad. 839 00:42:56,120 --> 00:42:57,640 Ond y datganwyd i fyny top. 840 00:42:57,640 --> 00:43:00,250 Ond yna hanner colon, dim gwerth ei roi mewn gwirionedd ynddo. 841 00:43:00,250 --> 00:43:02,330 Felly, mae'n deg i alw hyn yn gwerth garbage. 842 00:43:02,330 --> 00:43:03,430 Pwy a ŵyr beth sydd yno? 843 00:43:03,430 --> 00:43:07,160 Mae'n gweddillion darnau a ddefnyddiwyd gan rai llinell blaenorol o cod mewn 844 00:43:07,160 --> 00:43:08,300 fy rhaglen. 845 00:43:08,300 --> 00:43:13,250 >> Felly os wyf yn dweud yn mynd yno, mae hyn yn debyg, Does gen i ddim syniad lle mae saeth mae hyn yn 846 00:43:13,250 --> 00:43:14,490 yn mynd i roi diwedd ar i fyny. 847 00:43:14,490 --> 00:43:17,720 A dyna pryd fyddwch fel arfer yn cael wall. 848 00:43:17,720 --> 00:43:22,430 Os ydych yn ddamweiniol dereference, felly i siarad, neu ewch i gyfeiriad nad yw hynny'n 849 00:43:22,430 --> 00:43:25,400 mewn gwirionedd yn gyfeiriad dilys, pethau drwg yn digwydd. 850 00:43:25,400 --> 00:43:27,550 >> A dyna yn union beth ddigwyddodd i feddwl Binky. 851 00:43:27,550 --> 00:43:31,060 Felly, yn cofio bod y stori a Nick yn dweud yma oedd yr un syniad â beth 852 00:43:31,060 --> 00:43:34,050 Rwyf wedi tynnu gyda rhith o sialc ar y bwrdd yno. 853 00:43:34,050 --> 00:43:35,960 X ac y yn cael eu datgan. 854 00:43:35,960 --> 00:43:39,690 >> Yna rydym yn dyrannu maint y yn int a'i storio yn x. 855 00:43:39,690 --> 00:43:42,130 Yna y llinell nesaf a wnaethom * x. 856 00:43:42,130 --> 00:43:46,070 Roedd hyn yn ffon hud Nick o dereferencing. 857 00:43:46,070 --> 00:43:49,780 Sy'n rhoi 42 yn y cof nodwyd gan x. 858 00:43:49,780 --> 00:43:51,600 >> Ond mae hyn yn lle mae pethau aeth yn drychinebus o'i le. 859 00:43:51,600 --> 00:43:51,820 Iawn? 860 00:43:51,820 --> 00:43:53,550 Rydym yn ceisio dereference y. 861 00:43:53,550 --> 00:43:55,620 Ond roedd y rhywfaint o werth ffug, dde? 862 00:43:55,620 --> 00:43:57,720 >> Bod saeth yn y chwith isaf gornel, nid yw'n 863 00:43:57,720 --> 00:43:58,950 mewn gwirionedd yn cyfeirio at unrhyw beth. 864 00:43:58,950 --> 00:44:01,520 Mae'n fath o gwneud yr hyn yr wyf oedd yma ar y bwrdd. 865 00:44:01,520 --> 00:44:05,900 Felly, pethau drwg yn digwydd, segmentu fai, neu Binky fai, yn yr achos hwn. 866 00:44:05,900 --> 00:44:10,800 >> Ond os byddwn wedyn yn atgyweiria bod drwy wneud x yn cael y sut mae'r newid stori? 867 00:44:10,800 --> 00:44:15,760 Wel, os wyf yn gwneud x yn cael y, dyna effeithiol yr un fath â dweud 868 00:44:15,760 --> 00:44:19,235 beth bynnag yw hwn, Ych-rhywbeth yn mynd i fod yr un peth yma, 869 00:44:19,235 --> 00:44:20,080 Ych-rywbeth. 870 00:44:20,080 --> 00:44:22,970 Neu ddarluniadol byddwn yn tynnu saeth. 871 00:44:22,970 --> 00:44:25,530 >> Felly yma ar y bwrdd gyda Binky, gyda'r llinell nesaf 872 00:44:25,530 --> 00:44:28,350 cod, * y golygu mynd yno. 873 00:44:28,350 --> 00:44:29,400 Ble mae ar gael? 874 00:44:29,400 --> 00:44:30,820 Mae'n golygu dros yma. 875 00:44:30,820 --> 00:44:36,050 >> A phan fyddwn yn diweddaru hynny i fod yn 13 'i jyst yn golygu mynd a 876 00:44:36,050 --> 00:44:39,470 ysgrifennu 13 yma nawr. 877 00:44:39,470 --> 00:44:44,130 Felly, efallai nad yn gyfan gwbl syml ar yr olwg gyntaf. 878 00:44:44,130 --> 00:44:47,740 Ond i grynhoi ac i ddefnyddio'r un jargon sy'n Binky yn defnyddio yma, felly 879 00:44:47,740 --> 00:44:50,485 y ddau gyntaf ddyrannu'r awgrymiadau, x ac y, ond nid yw'r pointees. 880 00:44:50,485 --> 00:44:54,750 Ac nid pointees yn defnyddio term yn gyffredinol. 881 00:44:54,750 --> 00:44:56,120 Ond mae pwyntydd hollol y mae. 882 00:44:56,120 --> 00:44:59,200 Ond mae'n beth sy'n cael ei sylw at y ffaith arnynt yn gyfundrefn enwau Binky ar. 883 00:44:59,200 --> 00:45:01,660 >> Mae'r llinell nesaf, wrth gwrs, dyrannu pointee int. 884 00:45:01,660 --> 00:45:04,840 Felly, darn o cof - gan fy mod yn tynnu drosodd ar yr ochr dde-law yno - ac yn gosod 885 00:45:04,840 --> 00:45:06,470 x cyfartal i dynnu sylw iddo. 886 00:45:06,470 --> 00:45:11,350 Mae hyn yn dereferences x i storio 42 yn y cof ei fod yn pwyntio at. 887 00:45:11,350 --> 00:45:13,380 Ac yna mae hyn, wrth gwrs, oedd yn beth drwg. 888 00:45:13,380 --> 00:45:15,600 Oherwydd nad oedd y pwyntio ar unrhyw beth eto. 889 00:45:15,600 --> 00:45:16,530 Mae hyn yn ei gosod. 890 00:45:16,530 --> 00:45:18,240 Felly, mae hyn yn dal i fod rhaglen bygi. 891 00:45:18,240 --> 00:45:21,580 Nid yw'r ffaith ein bod yn chwythu drwy'r linell cod gan linell a dweud, oh yn dda, 892 00:45:21,580 --> 00:45:22,690 gadael iddo damwain yno. 893 00:45:22,690 --> 00:45:23,420 Mae hynny'n beth drwg. 894 00:45:23,420 --> 00:45:26,790 Groes yn y rhaglen 'jyst yn mynd i erthylu yn gyfan gwbl ar y llinell. 895 00:45:26,790 --> 00:45:30,550 Ond os ydych yn cael gwared ar y damwain llinell ac yn ei le gyda'r ddau olaf 896 00:45:30,550 --> 00:45:32,470 llinellau yno i chi aseinio - 897 00:45:32,470 --> 00:45:35,310 ddefnyddio aseiniad pwyntydd - y i dynnu sylw at x fel pwynt t. 898 00:45:35,310 --> 00:45:39,280 Ac yna rydych dereference y yn ffordd ddiogel iawn. 899 00:45:39,280 --> 00:45:41,520 >> Felly, lle mae hyn yn gadael i ni? 900 00:45:41,520 --> 00:45:45,350 Wel, ymddangos bod o dan y cwfl yn y llyfrgell CS50, awgrymiadau yn 901 00:45:45,350 --> 00:45:46,320 ddefnyddio drwy gydol. 902 00:45:46,320 --> 00:45:48,910 A byddwn yn mewn gwirionedd yn dechrau croen yn ôl y haen cyn bo hir. 903 00:45:48,910 --> 00:45:51,740 Ond mae'n troi hefyd, mynegiant a efallai y bydd rhai ohonoch yn gyfarwydd â nhw, 904 00:45:51,740 --> 00:45:54,580 yn enwedig y rhai yn fwy cyfforddus, mewn gwirionedd fod o boblogaidd iawn 905 00:45:54,580 --> 00:45:56,390 gwefan, neu orlifo stac, y dyddiau hyn. 906 00:45:56,390 --> 00:45:58,720 >> Ond mae hyn mewn gwirionedd wedi iawn ystyr technegol. 907 00:45:58,720 --> 00:46:00,160 Rydym bellach yn gwybod beth yw pentwr. 908 00:46:00,160 --> 00:46:02,550 Mae fel pentwr o hambyrddau tu mewn i neuadd fwyta. 909 00:46:02,550 --> 00:46:05,140 >> Neu tu mewn i'ch cyfrifiadur cof, mae'r ŵyl fframiau hynny 910 00:46:05,140 --> 00:46:06,900 sy'n cael eu defnyddio gan swyddogaethau. 911 00:46:06,900 --> 00:46:10,760 Wel, mae'n ymddangos fod oherwydd hynny gweithredu syml iawn o 912 00:46:10,760 --> 00:46:14,970 y cof a'r fframiau ar yr hyn a elwir stac, gallwch chi mewn gwirionedd yn cymryd rheolaeth 913 00:46:14,970 --> 00:46:17,050 o system gyfrifiadurol yn weddol hawdd. 914 00:46:17,050 --> 00:46:22,180 Gallwch darnia i mewn i system os yw pobl fel nad ni wedi ysgrifennu ein cod 915 00:46:22,180 --> 00:46:23,300 arbennig o dda. 916 00:46:23,300 --> 00:46:26,670 >> Os yw pobl fel ni yn defnyddio darnau y cof neu ddefnyddio araeau - 917 00:46:26,670 --> 00:46:27,810 hyd yn oed yn fwy cyffredin - 918 00:46:27,810 --> 00:46:31,800 ond weithiau ag anghofio i wirio ffiniau ein amrywiaeth wrth i chi efallai 919 00:46:31,800 --> 00:46:38,470 rhaid i chi eich hun weithiau, a bwysleisiodd ffordd rhy bell heibio diwedd arae. 920 00:46:38,470 --> 00:46:40,520 Yn yr achos gorau, eich rhaglen bosibl y bydd yn chwalu. 921 00:46:40,520 --> 00:46:42,280 Wall, caredig o embaras. 922 00:46:42,280 --> 00:46:45,480 Ddim yn wych, ond nid yw o reidrwydd yn beth drwg iawn. 923 00:46:45,480 --> 00:46:49,480 >> Ond os yw eich rhaglen mewn gwirionedd ar real gyfrifiaduron defnyddwyr ', os yw'n rhedeg 924 00:46:49,480 --> 00:46:53,070 ar wefan y mae pobl go iawn ar hap ar y rhyngrwyd yn cael eu taro, gosod 925 00:46:53,070 --> 00:46:56,690 pobl gymell pethau drwg ar eich cod yn Yn gyffredinol, nid yn beth da oherwydd 926 00:46:56,690 --> 00:46:59,930 mae'n golygu cyfle i gymryd rheolaeth ar y cyfrifiadur. 927 00:46:59,930 --> 00:47:01,350 Ac mae hyn yn mynd i edrych ychydig yn cryptig. 928 00:47:01,350 --> 00:47:04,570 Ond yr wyf yn meddwl y byddwn i'n eich dychryn gyda yr enghraifft olaf yma. 929 00:47:04,570 --> 00:47:05,650 >> Dyma enghraifft o god. 930 00:47:05,650 --> 00:47:07,370 Ac mae 'na Wicipedia da erthygl sy'n cerdded trwy 931 00:47:07,370 --> 00:47:08,530 hyn yn fwy manwl. 932 00:47:08,530 --> 00:47:13,890 Mae gennyf bennaf ar y galw gwaelod foo, gan fynd yn argv o 1. 933 00:47:13,890 --> 00:47:15,750 A dim ond fel y gallwch rhedeg y rhaglen ac yn pasio 934 00:47:15,750 --> 00:47:17,080 mewnbwn mympwyol. 935 00:47:17,080 --> 00:47:20,180 >> Ac yna foo ei ddatgan atodol â derbyn llinyn, neu fwy 936 00:47:20,180 --> 00:47:21,700 union, torgoch yn *. 937 00:47:21,700 --> 00:47:23,860 Yna mae'n datgan amrywiaeth o chars. 938 00:47:23,860 --> 00:47:27,130 Ffoniwch y byffer, yn fwy cyffredinol, o faint 12. 939 00:47:27,130 --> 00:47:30,900 Felly, gall 12 chars ffitio y tu o'r amrywiaeth o'r enw c. 940 00:47:30,900 --> 00:47:33,510 >> Ac yna mae'n defnyddio y swyddogaeth newydd, sydd yn newydd ond nid yw'n anodd 941 00:47:33,510 --> 00:47:34,930 deall, copi cof. 942 00:47:34,930 --> 00:47:39,290 Mae copïau y cof o'r bar, a oedd yn y n ddiwethaf amrywiol, beth bynnag fo'r 943 00:47:39,290 --> 00:47:42,080 defnyddiwr deipio i mewn i argv 1 i c. 944 00:47:42,080 --> 00:47:43,090 Faint o bytes? 945 00:47:43,090 --> 00:47:44,260 Mae hyd llinyn y bar. 946 00:47:44,260 --> 00:47:48,380 >> Felly, mewn geiriau eraill, os yw mathau y defnyddiwr yn h-e-l-l-o enter, hyd llinyn 947 00:47:48,380 --> 00:47:49,260 o helo yw pump. 948 00:47:49,260 --> 00:47:52,790 Felly pump o'r bytes hynny yn mynd i gael copïo i mewn i'r casgliad o'r enw c, a 949 00:47:52,790 --> 00:47:54,110 o faint 12. 950 00:47:54,110 --> 00:47:58,710 Ond pa fath y defnyddiwr mewn llawer hwy gair sy'n 13 nod neu 14 951 00:47:58,710 --> 00:48:01,250 cymeriadau neu 100 o nodau neu fwy? 952 00:48:01,250 --> 00:48:02,660 >> Ble maen nhw'n mynd i fynd? 953 00:48:02,660 --> 00:48:06,090 Wel, y ffrâm, sy'n hambwrdd yn y pentwr fwyta-neuadd, 954 00:48:06,090 --> 00:48:06,930 maen nhw'n mynd i fynd yno. 955 00:48:06,930 --> 00:48:10,080 Ac mae'n jyst yn mynd i ddechrau ysgrifennu dros pethau eraill sydd eisoes 956 00:48:10,080 --> 00:48:12,880 ar y simnai, yn gorlifo, y simnai, fel petai. 957 00:48:12,880 --> 00:48:14,780 >> Felly ddarluniadol, feddwl am y peth fel hyn. 958 00:48:14,780 --> 00:48:17,970 Fersiwn lliwgar o hyn yn unig yw y darlun yr ydym wedi bod yn arlunio. 959 00:48:17,970 --> 00:48:20,060 Ar y gwaelod, gadewch i ni ddweud, yw prif. 960 00:48:20,060 --> 00:48:24,690 Ac ar ben, yr hyn rydych yn ei weld yn awr yn y ffrâm, lliw godio yn awr, ar gyfer 961 00:48:24,690 --> 00:48:26,090 swyddogaeth o'r enw foo. 962 00:48:26,090 --> 00:48:30,170 Ond yr hyn sy'n ddiddorol yma am foo yw bod yma yw ei ffrâm. 963 00:48:30,170 --> 00:48:32,860 Felly mae'n tynnu yn union fel yr wyf oedd ond mewn glas golau. 964 00:48:32,860 --> 00:48:35,220 Ac yn awr dyma lle c braced 0 yn mynd. 965 00:48:35,220 --> 00:48:37,410 A dyma lle c braced 11 yn mynd i roi diwedd ar i fyny. 966 00:48:37,410 --> 00:48:39,670 >> Mewn geiriau eraill, mae'n digwydd i cael eu cynrychioli fel sgwâr. 967 00:48:39,670 --> 00:48:42,320 Ond os ydych yn unig yn cadw plopping bytes i lawr - neu chars - maen nhw'n mynd i ben 968 00:48:42,320 --> 00:48:46,070 i fyny yn y lleoliad 0 holl ffordd i fyny i 11 oherwydd ei fod yn 0 mynegeio. 969 00:48:46,070 --> 00:48:49,170 >> Ond ble mae'r cymeriad 13 yn mynd i roi diwedd ar i fyny? 970 00:48:49,170 --> 00:48:50,310 Ble mae'r 14eg? 971 00:48:50,310 --> 00:48:52,430 Ble mae'r cymeriad 50fed yn mynd i roi diwedd ar i fyny? 972 00:48:52,430 --> 00:48:54,070 >> Mae'n mynd i gadw i fynd i lawr. 973 00:48:54,070 --> 00:48:57,350 Oherwydd hyd yn oed er ein bod wedi tynnu llun gyda'r pentwr tyfu i fyny, y 974 00:48:57,350 --> 00:48:59,920 cyfeiriadau, mae'n troi allan, yn mynd o cyfeiriadau bach, bach 975 00:48:59,920 --> 00:49:01,830 awgrymiadau, i gyfeiriadau mawr. 976 00:49:01,830 --> 00:49:03,540 Felly, 'i jyst yn cadw mynd i fyny ac i fyny. 977 00:49:03,540 --> 00:49:05,660 >> Felly, os mathau y defnyddiwr yn helo, mae hynny'n wych. 978 00:49:05,660 --> 00:49:08,650 Dim bug, dim problem, yn ddiogel pawb. 979 00:49:08,650 --> 00:49:11,940 Ond os mathau y defnyddiwr yn yr hyn a chi helpu galw cod wrthwynebol, yn cynrychioli 980 00:49:11,940 --> 00:49:16,040 gyffredinol fel, ymosodiad, ymosodiad, ymosodiad, ymosodiad, gall beth fydd yn digwydd? 981 00:49:16,040 --> 00:49:19,760 >> Wel, os yw pob un o'r mewnbwn bod y defnyddiwr Nid yw teipio i mewn yn ddim ond rhai gyfeillgar 982 00:49:19,760 --> 00:49:21,540 neu linyn sarhaus o gymeriadau. 983 00:49:21,540 --> 00:49:24,050 Mae'n mewn gwirionedd cyfres o gymeriadau os ydych yn ei lunio, 984 00:49:24,050 --> 00:49:26,050 y mae mewn gwirionedd cod. 985 00:49:26,050 --> 00:49:29,570 Efallai ei fod cod sy'n dileu'r holl ffeiliau ar eich gyriant caled neu anfon spam 986 00:49:29,570 --> 00:49:30,810 neu rywbeth fel 'na. 987 00:49:30,810 --> 00:49:35,110 Sylwch mai'r hyn sy'n allweddol yma yw bod os yw'r dyn drwg gennych ddigon ffodus i 988 00:49:35,110 --> 00:49:37,830 ysgrifennu dros y darn coch y cof - 989 00:49:37,830 --> 00:49:41,080 ac nid oeddwn yn tynnu ar fy llun, ond y darlun hwn Wicipedia yma wedi - 990 00:49:41,080 --> 00:49:42,890 ei hyn a elwir cyfeiriad dychwelyd. 991 00:49:42,890 --> 00:49:47,470 >> Pan fydd yn dychwelyd bwyd, pan fydd yn dychwelyd cyfnewid, sut mae'r cyfrifiadur yn gwybod i fynd o 992 00:49:47,470 --> 00:49:49,790 i fyny yma i lawr yma? 993 00:49:49,790 --> 00:49:52,920 Neu yn y segment dechnoleg i fyny uchod, pa mor mae'n gwybod i fynd o'r cyfnewid 994 00:49:52,920 --> 00:49:54,870 cod - y 0 ac 1 yn sy'n cyfansoddi cyfnewid - 995 00:49:54,870 --> 00:49:56,020 yn ôl i'r prif? 996 00:49:56,020 --> 00:50:00,450 Mae yna gyfeiriad dychwelyd hyn a elwir yn storio yn yr un ffrâm pentwr, ar 997 00:50:00,450 --> 00:50:02,140 yr un hambwrdd caffi. 998 00:50:02,140 --> 00:50:06,080 >> Felly, os yw'r dyn drwg yn ddigon clyfar i rhoi cod ymosodiad, y cod ymosodiad, ymosodiad 999 00:50:06,080 --> 00:50:07,960 cod, a chael digon lwcus - 1000 00:50:07,960 --> 00:50:11,630 yn aml drwy brofi a methu - i ysgrifennu dros y cyfeiriad dychwelyd coch, 1001 00:50:11,630 --> 00:50:14,360 gyda chyfeiriad a rhybudd frig. 1002 00:50:14,360 --> 00:50:16,830 Hysbysiad 0835C080. 1003 00:50:16,830 --> 00:50:20,650 Mae wedi ysgrifennu yn ôl hyd uchaf ar gyfer rhesymau byddwn efallai ailystyried. 1004 00:50:20,650 --> 00:50:22,050 Mae hyn yn y nifer hwnnw. 1005 00:50:22,050 --> 00:50:25,790 >> Felly, os yw'r dyn drwg yn cael digon lwcus neu yn ddigon craff i ysgrifennu dros y coch 1006 00:50:25,790 --> 00:50:29,480 stribed o gof gyda chyfeiriad Cod ei fod ef neu hi wedi rywsut 1007 00:50:29,480 --> 00:50:34,980 chwistrellu i mewn i'ch cyfrifiadur, dyfalu y mae eu cod yn mynd i gael ei ddychwelyd i 1008 00:50:34,980 --> 00:50:38,260 cyn gynted ag y foo yn cael ei wneud cyflawni? 1009 00:50:38,260 --> 00:50:39,440 >> Cod y dyn drwg yn. 1010 00:50:39,440 --> 00:50:43,610 Felly, y cod ymosodiad, AAA, unwaith eto, gallai anfon spam, gallai dileu yr holl ffeiliau 1011 00:50:43,610 --> 00:50:44,500 ar eich disg galed. 1012 00:50:44,500 --> 00:50:48,740 Ond dyna wir gorlif stac , neu yn gor-redeg byffer, neu 1013 00:50:48,740 --> 00:50:51,060 clustogi ymosodiad gorlifo. 1014 00:50:51,060 --> 00:50:54,400 >> Ac mae'n hynod, hynod gyffredin hyd heddiw gyda rhaglenni ysgrifenedig yn 1015 00:50:54,400 --> 00:50:58,220 C, C + +, a hyd yn oed rhai ieithoedd eraill. 1016 00:50:58,220 --> 00:51:02,275 Ar y nodyn brawychus, byddwn ni i ben gyda jôc. 1017 00:51:02,275 --> 00:51:03,230 >> [Chwerthin] 1018 00:51:03,230 --> 00:51:04,550 >> Welwn ni chi ar ddydd Mercher. 1019 00:51:04,550 --> 00:51:07,920 1020 00:51:07,920 --> 00:51:10,310 Yn y CS50 nesaf - 1021 00:51:10,310 --> 00:51:15,920 Felly, rwy'n i gyd allan o lampau disg heddiw, ond aros, rhydd o fraster llaeth, hanner y ffôn 1022 00:51:15,920 --> 00:51:17,850 llyfr, y sudd oren fy mod yn yfed heddiw. 1023 00:51:17,850 --> 00:51:20,370 1024 00:51:20,370 --> 00:51:22,780 USB cebl, a wrench. 1025 00:51:22,780 --> 00:51:24,800 >> [CHWARAE CERDDORIAETH]