1 00:00:00,000 --> 00:00:11,320 2 00:00:11,320 --> 00:00:13,260 >> DAVID Malan: Helo, a croesawu yn ôl i CS50. 3 00:00:13,260 --> 00:00:14,860 Felly, mae hyn yw diwedd wythnos pedwar. 4 00:00:14,860 --> 00:00:16,680 Dim ond un cyhoeddiad cyntaf. 5 00:00:16,680 --> 00:00:19,600 Felly, yr hyn a elwir yn bumed Dydd Llun dod i fyny hyn Dydd Llun i ddod. 6 00:00:19,600 --> 00:00:22,800 Dyma'r cyfle i newid o SADWRN / UNSAT i radd lythyr, neu gan 7 00:00:22,800 --> 00:00:24,130 gradd llythyr SADWRN / UNSAT. 8 00:00:24,130 --> 00:00:27,130 Annoyingly, y broses honno yn ei gwneud yn ofynnol i llofnod, gan fod yn rhaid i chi lenwi 9 00:00:27,130 --> 00:00:28,770 allan un o'r rhai ffurflenni ychwanegu / galw heibio pinc. 10 00:00:28,770 --> 00:00:31,680 >> Oherwydd dechnegol, y TAS / UNSAT fersiwn a'r fersiwn gradd llythyr 11 00:00:31,680 --> 00:00:33,320 rhifau catalog gwahanol. 12 00:00:33,320 --> 00:00:34,240 Ond nid oes llawer mawr. 13 00:00:34,240 --> 00:00:36,620 Dim ond yn dod i fyny i mi neu i Rob neu i Lauren ar unrhyw adeg. 14 00:00:36,620 --> 00:00:39,550 Neu anfonwch e-bost i ni os nad oes gennych y math o waith papur sydd ei angen arnoch heddiw, ac rydym yn 15 00:00:39,550 --> 00:00:43,410 Bydd yn sicr o helpu i gymryd gofalu am hynny cyn dydd Llun. 16 00:00:43,410 --> 00:00:45,780 >> Mae pob hawl, felly heddiw - 17 00:00:45,780 --> 00:00:47,630 mewn gwirionedd, mae 'na dipyn o adlais. 18 00:00:47,630 --> 00:00:51,070 Allwn ni tôn fi i lawr ychydig? 19 00:00:51,070 --> 00:00:51,730 OK. 20 00:00:51,730 --> 00:00:54,850 Felly heddiw, rydym yn cyflwyno pwnc a elwir fel awgrymiadau. 21 00:00:54,850 --> 00:00:57,770 A byddaf yn cyfaddef bod hyn yn un o'r pynciau mwy cymhleth yr ydym yn tueddu i 22 00:00:57,770 --> 00:01:00,960 cynnwys yn y dosbarth hwn, neu mewn gwirionedd unrhyw Cwrs rhagarweiniol sy'n defnyddio C. 23 00:01:00,960 --> 00:01:05,510 >> Ond chymryd fy ngair i am hynny, yn enwedig os yw eich meddwl yn teimlo ychydig yn fwy plygu 24 00:01:05,510 --> 00:01:07,100 heddiw ac yn yr wythnosau i ddod. 25 00:01:07,100 --> 00:01:10,340 Dyw hi ddim yn gynrychioliadol o chi'n cael waeth yn y 'i jyst yn golygu bod 26 00:01:10,340 --> 00:01:13,360 mae'n bwnc arbennig o soffistigedig yr wyf yn addo, ychydig wythnosau 27 00:01:13,360 --> 00:01:17,610 felly, bydd yn ymddangos yn rhy drawiadol syml o edrych yn ôl. 28 00:01:17,610 --> 00:01:18,720 >> Rwy'n dal i gofio hyd heddiw. 29 00:01:18,720 --> 00:01:22,190 Roeddwn yn eistedd yn Elliott Neuadd Fwyta, yn eistedd nesaf at fy TF Nishat Mehta, 30 00:01:22,190 --> 00:01:24,070 a oedd yn un o drigolion tŷ Elliott. 31 00:01:24,070 --> 00:01:26,340 Ac am ryw reswm, mae hyn yn pwnc yn unig clicio. 32 00:01:26,340 --> 00:01:29,430 Pa un yw i ddweud fy mod hefyd ei chael yn anodd ag ef ers peth amser, ond yr wyf yn 33 00:01:29,430 --> 00:01:33,610 bydd yn gwneud fy ngorau i helpu i osgoi unrhyw fath cael trafferth gyda bwnc yn y pen draw 34 00:01:33,610 --> 00:01:34,580 yn eithaf pwerus. 35 00:01:34,580 --> 00:01:37,350 >> Yn wir, un o'r pynciau y byddwn yn trafod yn ystod yr wythnosau sydd i ddod yw bod 36 00:01:37,350 --> 00:01:41,130 o ddiogelwch, a sut y gallwch chi mewn gwirionedd yn manteisio ar beiriannau mewn ffyrdd 37 00:01:41,130 --> 00:01:42,320 nad oedd y bwriadwyd. 38 00:01:42,320 --> 00:01:45,850 Ac exploitations hynny yn nodweddiadol y canlyniad o chwilod, camgymeriadau ein bod yn 39 00:01:45,850 --> 00:01:49,740 pobl yn gwneud drwy beidio â deall rhai y gweithrediad sylfaenol 40 00:01:49,740 --> 00:01:52,250 manylion drwy pa raglenni yn cael eu gwneud. 41 00:01:52,250 --> 00:01:55,410 >> Awr i wneud hyn yn ymddangos yn fwy defnyddiwr gyfeillgar, yr wyf yn meddwl y byddwn i'n chwarae 10 42 00:01:55,410 --> 00:01:59,680 ail rhagolwg o ychydig o animeiddio clai ffigur a enwir Binky a oedd yn dod i 43 00:01:59,680 --> 00:02:03,020 bywyd gan ffrind o ni yn Stanford, Athro Nick Parlante. 44 00:02:03,020 --> 00:02:06,753 Felly, yn fy ngalluogi i roi hwn i chi ymlid o Binky yma. 45 00:02:06,753 --> 00:02:09,520 >> [VIDEO Playback] 46 00:02:09,520 --> 00:02:10,380 >> -Hey, Binky. 47 00:02:10,380 --> 00:02:11,050 Wake i fyny. 48 00:02:11,050 --> 00:02:13,610 Mae'n amser am hwyl pwyntydd. 49 00:02:13,610 --> 00:02:14,741 >> -Beth sy'n bod? 50 00:02:14,741 --> 00:02:16,440 Dysgu am awgrymiadau? 51 00:02:16,440 --> 00:02:17,928 O, nwyddau. 52 00:02:17,928 --> 00:02:18,920 >> [VIDEO END Playback] 53 00:02:18,920 --> 00:02:20,670 >> DAVID Malan: Mae hynny'n Stanford gwyddoniaeth gyfrifiadurol. 54 00:02:20,670 --> 00:02:23,194 Felly mwy am hynny i ddod. 55 00:02:23,194 --> 00:02:24,930 >> [Cymeradwyaeth] 56 00:02:24,930 --> 00:02:26,660 >> DAVID Malan: Mae'n ddrwg gennyf, Nick. 57 00:02:26,660 --> 00:02:30,680 >> Felly, dwyn i gof bod tro diwethaf i ni a ddaeth i ben ar hwn Cliffhanger cyffrous 58 00:02:30,680 --> 00:02:32,960 lle swyddogaeth hon nid yn unig oedd yn gweithio. 59 00:02:32,960 --> 00:02:34,960 O leiaf yn reddfol, teimlir fel y dylai weithio. 60 00:02:34,960 --> 00:02:37,600 Yn syml, gyfnewid y gwerthoedd o dau gyfanrif. 61 00:02:37,600 --> 00:02:40,915 Ond yn cofio pan fyddwn yn argraffu'r gwerthoedd gwreiddiol yn y prif, un a 62 00:02:40,915 --> 00:02:44,210 dau, eu bod yn dal yn un a dau ac nid dau ac un. 63 00:02:44,210 --> 00:02:46,070 >> Felly, gadewch i mi newid mewn gwirionedd draw at y peiriant. 64 00:02:46,070 --> 00:02:50,180 Ac yr wyf yn ysgrifennu i fyny ychydig o god ysgerbydol yn ymlaen llaw yma, lle yr wyf yn honni bod x 65 00:02:50,180 --> 00:02:52,500 Bydd fod yn 1, bydd y fod yn 2. 66 00:02:52,500 --> 00:02:54,810 Yna argraffu ddau o'u gwerthoedd gyda phrint f. 67 00:02:54,810 --> 00:02:57,540 >> Yna honni i lawr yma y rydym yn mynd i gyfnewid eu cyfer. 68 00:02:57,540 --> 00:03:00,800 Gadewais yn fan wag yma i ni llenwi heddiw mewn dim ond munud. 69 00:03:00,800 --> 00:03:03,380 Yna, yr wyf i'n mynd i honni bod y dau newidyn wedi cael eu cyfnewid. 70 00:03:03,380 --> 00:03:04,770 Yna mi i'n mynd i argraffu nhw allan eto. 71 00:03:04,770 --> 00:03:07,090 Ac felly gobeithio, dylwn gweler 1, 2. 72 00:03:07,090 --> 00:03:07,380 2, 1. 73 00:03:07,380 --> 00:03:09,830 Dyna'r syml super nod ar hyn o bryd. 74 00:03:09,830 --> 00:03:12,430 >> Felly, sut rydym yn mynd ati i gyfnewid ddau newidyn? 75 00:03:12,430 --> 00:03:17,220 Wel, os wyf yn cynnig yma y cwpanau hyn yn allai gynrychioli cof mewn cyfrifiadur. 76 00:03:17,220 --> 00:03:19,070 Mae hyn yn ychydig o brathiadau, mae hyn yn yn ychydig brathiadau arall. 77 00:03:19,070 --> 00:03:23,260 Gallem fod wedi dod yn wirfoddolwr ar hyd a ni gymysgu rhai diodydd, os gyfarwydd? 78 00:03:23,260 --> 00:03:23,920 Dewch ar i fyny. 79 00:03:23,920 --> 00:03:24,815 Beth yw eich enw? 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 Dewch ar i fyny, Jess. 83 00:03:26,540 --> 00:03:29,180 Os nad ydych yn meddwl, mae'n rhaid i ni roi'r Google Gwydr arnoch chi fel y gallwn 84 00:03:29,180 --> 00:03:30,430 immortalize hyn. 85 00:03:30,430 --> 00:03:32,800 86 00:03:32,800 --> 00:03:34,670 OK, gwydr. 87 00:03:34,670 --> 00:03:37,250 Cofnodi fideo. 88 00:03:37,250 --> 00:03:43,103 Ac yn iawn, rydym yn dda i mynd gyda Jess yma. 89 00:03:43,103 --> 00:03:43,810 Mae pob hawl. 90 00:03:43,810 --> 00:03:45,120 Neis i gwrdd â chi. 91 00:03:45,120 --> 00:03:47,720 >> Felly, beth hoffwn chi ei wneud yma - pe gallech, yn eithaf cyflym - 92 00:03:47,720 --> 00:03:51,040 dim ond ni arllwys hanner gwydraid o oren sudd a hanner gwydraid o laeth, 93 00:03:51,040 --> 00:03:55,710 cynrychioli yn effeithiol y rhifau 1 mewn un cwpan a 2 yn y cwpan eraill. 94 00:03:55,710 --> 00:04:01,380 95 00:04:01,380 --> 00:04:02,630 >> Mae hyn yn mynd i fod yn ffilm dda. 96 00:04:02,630 --> 00:04:04,910 97 00:04:04,910 --> 00:04:05,860 >> JESS: Mae'n ddrwg gennyf. 98 00:04:05,860 --> 00:04:06,330 >> DAVID Malan: Na, na. 99 00:04:06,330 --> 00:04:08,703 Mae'n iawn. 100 00:04:08,703 --> 00:04:10,120 Nice. 101 00:04:10,120 --> 00:04:12,950 Mae pob hawl, felly mae gennym bedwar bytes gwerth o sudd oren. 102 00:04:12,950 --> 00:04:14,460 Byddwn yn ei alw y gwerth 1. 103 00:04:14,460 --> 00:04:16,579 Nawr pedwar bytes arall gwerth o laeth. 104 00:04:16,579 --> 00:04:18,519 Yn galw ei gwerthfawrogi 2. 105 00:04:18,519 --> 00:04:20,440 Felly, x ac y, yn y drefn honno. 106 00:04:20,440 --> 00:04:23,450 >> Mae pob hawl, felly nawr os y dasg dan sylw - i chi, Jess, o flaen yr holl 107 00:04:23,450 --> 00:04:24,270 eich cyd-ddisgyblion - 108 00:04:24,270 --> 00:04:28,510 yw cyfnewid y gwerthoedd x ac y fath ein bod am y sudd oren yn y 109 00:04:28,510 --> 00:04:32,070 cwpan eraill a'r llaeth mewn cwpan hwn, sut y gallai chi - cyn i chi ei wneud mewn gwirionedd 110 00:04:32,070 --> 00:04:34,020 iddo - mynd ati i wneud hyn? 111 00:04:34,020 --> 00:04:35,220 >> OK, ddoeth penderfyniad. 112 00:04:35,220 --> 00:04:36,340 Felly mae angen ychydig mwy o gof. 113 00:04:36,340 --> 00:04:38,190 Felly, gadewch i ni ddyrannu dros dro cwpan, os mynnwch. 114 00:04:38,190 --> 00:04:40,540 Ac yn awr symud ymlaen i gyfnewid x ac y. 115 00:04:40,540 --> 00:04:52,950 116 00:04:52,950 --> 00:04:53,530 >> Ardderchog. 117 00:04:53,530 --> 00:04:54,420 Felly, gwneud yn dda iawn. 118 00:04:54,420 --> 00:04:55,670 Diolch yn fawr iawn, Jess. 119 00:04:55,670 --> 00:04:59,520 120 00:04:59,520 --> 00:05:00,020 Dyma chi. 121 00:05:00,020 --> 00:05:01,950 Mae cofrodd fach. 122 00:05:01,950 --> 00:05:04,350 >> Iawn, felly mae'n amlwg, syniad super syml. 123 00:05:04,350 --> 00:05:07,500 Hollol sythweledol bod angen ychydig mwy o le storio - yn y ffurflen hon, 124 00:05:07,500 --> 00:05:09,750 cwpan - os ydym mewn gwirionedd yn dymuno gyfnewid y ddau newidyn. 125 00:05:09,750 --> 00:05:11,110 Felly, gadewch i ni wneud yn union hynny. 126 00:05:11,110 --> 00:05:14,330 Yma yn y canol lle rwy'n hawlio fy mod mynd i fod yn gwneud ychydig o gyfnewid, byddaf 127 00:05:14,330 --> 00:05:15,720 mynd yn ei flaen ac yn datgan temp. 128 00:05:15,720 --> 00:05:17,980 A byddaf yn ei osod yn hafal i, dyweder, x. 129 00:05:17,980 --> 00:05:21,110 >> Yna mi i'n mynd i newid y gwerth x yn union fel Jess oedd yma gyda'r 130 00:05:21,110 --> 00:05:23,200 llaeth a sudd oren i fod yn hafal i y. 131 00:05:23,200 --> 00:05:27,460 Ac yr wyf i'n mynd i newid y i fod yn gyfartal i beidio x, oherwydd erbyn hyn byddem yn 132 00:05:27,460 --> 00:05:29,530 sownd mewn cylch, ond yn hytrach dros dro,. 133 00:05:29,530 --> 00:05:33,170 Pan fyddaf yn dros dro - neu lle mae Jess rhowch y sudd oren dros dro 134 00:05:33,170 --> 00:05:35,460 cyn clobbering bod cwpan gyda'r llaeth. 135 00:05:35,460 --> 00:05:37,250 >> Felly, gadewch i mi fynd yn ei flaen yn awr ac yn gwneud hyn. 136 00:05:37,250 --> 00:05:39,210 Mae'n cael ei alw noswap.c. 137 00:05:39,210 --> 00:05:41,190 Ac yn awr gadewch i mi redeg dim cyfnewid. 138 00:05:41,190 --> 00:05:43,910 Ac yn wir yr wyf yn gweld, os wyf yn ehangu'r ffenestr ychydig bach, sy'n 139 00:05:43,910 --> 00:05:45,160 x yw 1, y mae 2. 140 00:05:45,160 --> 00:05:47,230 Ac yna x yw 2, y yw 1. 141 00:05:47,230 --> 00:05:51,910 >> Ond yn dwyn i gof bod ar ddydd Llun rydym yn gwneud pethau ychydig yn wahanol lle rwyf 142 00:05:51,910 --> 00:05:56,760 yn hytrach na gweithredu swyddogaeth cynorthwy-ydd, os ydych, a oedd mewn gwirionedd yn ddi-rym. 143 00:05:56,760 --> 00:05:58,010 Fe'i gelwais yn gyfnewid. 144 00:05:58,010 --> 00:06:01,600 Rhoddais ddau baramedr, ac yr wyf yn galw iddynt ac yr wyf yn galw nhw b. 145 00:06:01,600 --> 00:06:04,380 >> Dweud y gwir, gallwn eu x a y galw. 146 00:06:04,380 --> 00:06:06,040 Does dim i rwystro fi o beidio gwneud hynny. 147 00:06:06,040 --> 00:06:08,140 Ond byddwn yn dadlau ei fod wedyn yn ychydig yn amwys. 148 00:06:08,140 --> 00:06:11,910 Gan fod galw i gof ar gyfer dydd Llun yr ydym yn honni bod y paramedrau hyn yn 149 00:06:11,910 --> 00:06:13,650 copïau o'r gwerthoedd trosglwyddo i mewn 150 00:06:13,650 --> 00:06:15,640 Felly, dim ond messes gyda'ch meddwl, rwy'n credu, os ydych yn defnyddio 151 00:06:15,640 --> 00:06:17,370 yn union yr un newidynnau. 152 00:06:17,370 --> 00:06:20,150 >> Felly, 'n annhymerus' yn lle hynny iddynt alw a b, dim ond er mwyn eglurder. 153 00:06:20,150 --> 00:06:21,840 Ond gallem eu galw y rhan fwyaf o unrhyw beth yr ydym ei eisiau. 154 00:06:21,840 --> 00:06:26,280 Ac yr wyf i'n mynd i gopïo a gludo effeithiol cod hwn o fyny yno 155 00:06:26,280 --> 00:06:27,170 i lawr i mewn yma. 156 00:06:27,170 --> 00:06:29,110 Gan fy mod jyst yn gweld ei fod yn gweithio. 157 00:06:29,110 --> 00:06:30,790 Felly dyna mewn cyflwr eithaf da. 158 00:06:30,790 --> 00:06:37,390 A byddaf yn newid fy x i, fy x i, fy y i b a fy y i b. 159 00:06:37,390 --> 00:06:39,130 >> Felly, mewn geiriau eraill, yr un rhesymeg union. 160 00:06:39,130 --> 00:06:40,850 Mae'r un peth yn union y gwnaeth Jess. 161 00:06:40,850 --> 00:06:44,350 Ac yna y un peth mae'n rhaid i mi ei wneud i fyny yma, wrth gwrs, yn awr yn galw hyn yn 162 00:06:44,350 --> 00:06:45,990 swyddogaeth, neu ffoniwch y swyddogaeth hon. 163 00:06:45,990 --> 00:06:50,430 Felly, byddaf yn galw swyddogaeth hon gyda dau mewnbynnau, x ac y, a daro Arbed. 164 00:06:50,430 --> 00:06:52,300 >> Mae pob hawl, felly sylfaenol yr un peth. 165 00:06:52,300 --> 00:06:55,570 Yn wir, yr wyf wedi gwneud y rhaglen yn ôl pob tebyg gymhleth ddiangen gan 166 00:06:55,570 --> 00:07:00,820 ysgrifennu swyddogaeth sy'n cael ei ond yn cymryd rhyw chwe linellau o god er fy mod yn 167 00:07:00,820 --> 00:07:02,970 yn flaenorol wedi gweithredu hyn mewn dim ond tri. 168 00:07:02,970 --> 00:07:06,230 >> Felly, gadewch i mi fynd yn ei flaen yn awr ac ail-wneud hyn, yn gwneud unrhyw cyfnewid. 169 00:07:06,230 --> 00:07:07,920 Mae pob hawl, yr wyf yn sgriwio i fyny yma. 170 00:07:07,920 --> 00:07:11,290 Dylai hyn fod yn wall y gallech gweld yn gynyddol gyffredin fel eich 171 00:07:11,290 --> 00:07:12,380 rhaglenni yn cael mwy cymhleth. 172 00:07:12,380 --> 00:07:13,470 Ond mae 'na ateb hawdd. 173 00:07:13,470 --> 00:07:15,650 Gadewch i mi sgrolio yn ôl i fyny yma. 174 00:07:15,650 --> 00:07:18,190 >> A beth yw'r gwall cyntaf i mi i'n gweld? 175 00:07:18,190 --> 00:07:19,520 Datganiad ymhlyg. 176 00:07:19,520 --> 00:07:21,466 Beth mae hynny'n ei ddangos fel arfer? 177 00:07:21,466 --> 00:07:22,830 Oh, anghofiais y prototeip. 178 00:07:22,830 --> 00:07:26,900 Anghofiais i addysgu'r compiler y cyfnewid yn mynd i fodoli hyd yn oed er ei fod yn 179 00:07:26,900 --> 00:07:28,920 yn bodoli ar y dechrau y rhaglen. 180 00:07:28,920 --> 00:07:35,780 Felly, Im 'jyst yn mynd i ddweud ddi-rym, cyfnewid, int, a b int, hanner colon. 181 00:07:35,780 --> 00:07:37,280 >> Felly, nid wyf ddim yn mynd i reimplement hynny. 182 00:07:37,280 --> 00:07:39,140 Ond erbyn hyn mae'n cyfateb i'r hyn sydd i lawr yma. 183 00:07:39,140 --> 00:07:42,530 Ac rhybudd, nad oes hanner colon yma, nad yw'n angenrheidiol pan 184 00:07:42,530 --> 00:07:43,200 gweithredu. 185 00:07:43,200 --> 00:07:46,010 >> Felly, gadewch i mi ail-wneud hyn, yn gwneud dim cyfnewid. 186 00:07:46,010 --> 00:07:46,910 Llawer gwell siâp. 187 00:07:46,910 --> 00:07:48,130 Rhedeg dim cyfnewid. 188 00:07:48,130 --> 00:07:48,740 Ac damn iddo. 189 00:07:48,740 --> 00:07:51,650 Nawr rydym yn ôl lle yr oeddem ar ddydd Llun, lle nad oedd y peth yn gyfnewid. 190 00:07:51,650 --> 00:07:55,410 >> A beth yw'r esboniad sythweledol am pam fod hyn yn digwydd? 191 00:07:55,410 --> 00:07:56,380 Yeah? 192 00:07:56,380 --> 00:07:57,630 >> MYFYRIWR: [Anghlywadwy]. 193 00:07:57,630 --> 00:08:04,140 194 00:08:04,140 --> 00:08:05,230 >> DAVID Malan: Yn union. 195 00:08:05,230 --> 00:08:07,330 Felly, a a b yn gopïau o x ac y. 196 00:08:07,330 --> 00:08:10,680 Ac yn wir, unrhyw bryd rydych chi wedi bod galw swyddogaeth hyd yn hyn bod 197 00:08:10,680 --> 00:08:12,540 pasio newidynnau fel ints - 198 00:08:12,540 --> 00:08:14,470 yn union fel y cyfnewid yn disgwyl yma - 199 00:08:14,470 --> 00:08:16,270 rydych guys wedi bod yn pasio mewn gopïau. 200 00:08:16,270 --> 00:08:19,150 >> Nawr mae hynny'n golygu ei fod yn cymryd ychydig o amser, eiliad, ar gyfer y 201 00:08:19,150 --> 00:08:23,270 cyfrifiadur i gopïo y darnau o un amrywiol yn y darnau o un arall. 202 00:08:23,270 --> 00:08:24,610 Ond nid yw hynny'n mor bwysig â hynny. 203 00:08:24,610 --> 00:08:25,920 Ond maen nhw'n serch hynny gopi. 204 00:08:25,920 --> 00:08:30,020 >> Ac felly yn awr, yng nghyd-destun cyfnewid, Yr wyf mewn gwirionedd yn llwyddiannus 205 00:08:30,020 --> 00:08:31,180 newid a b. 206 00:08:31,180 --> 00:08:33,000 Yn wir, gadewch i ni wneud yn gyflym gwirio bwyll. 207 00:08:33,000 --> 00:08:36,830 Print f mae a yn% i, llinell newydd. 208 00:08:36,830 --> 00:08:38,770 A gadewch i plwg yn a. 209 00:08:38,770 --> 00:08:41,830 Nawr, gadewch i ni wneud yr un peth gyda b. 210 00:08:41,830 --> 00:08:43,640 A gadewch i ni wneud yr un peth yma. 211 00:08:43,640 --> 00:08:47,260 >> Ac yn awr, gadewch i mi copïo un llinellau hynny eto ar waelod y swyddogaeth 212 00:08:47,260 --> 00:08:51,250 ar ôl fy dair llinell o ddiddorol allai fod wedi gweithredu, a 213 00:08:51,250 --> 00:08:53,270 argraffu a b unwaith eto. 214 00:08:53,270 --> 00:08:56,030 Felly nawr gadewch i ni wneud hyn, yn gwneud dim cyfnewid. 215 00:08:56,030 --> 00:08:58,430 Gadewch imi wneud y ffenestr derfynell a ychydig yn dalach, fel y gallwn weld 216 00:08:58,430 --> 00:08:59,520 mwy ohono ar unwaith. 217 00:08:59,520 --> 00:09:00,860 >> A rhedeg dim cyfnewid. 218 00:09:00,860 --> 00:09:04,000 x yw 1, y mae 2. a yw 1, b yw 2. 219 00:09:04,000 --> 00:09:06,070 Ac yna, mae a yn 2, b yw 1. 220 00:09:06,070 --> 00:09:09,390 Felly mae'n gweithio, yn union fel Jess wneud hynny yma tu mewn cyfnewid. 221 00:09:09,390 --> 00:09:13,090 Ond wrth gwrs, ei fod yn cael unrhyw effaith ar y newidynnau yn y brif. 222 00:09:13,090 --> 00:09:15,360 >> Felly, rydym yn gweld tric lle rydym yn Gallai atgyweiria hon, dde? 223 00:09:15,360 --> 00:09:19,560 Pan fyddwch yn wynebu gyda hyn gwmpasu mater hwn, gallai 'ch jyst punt a gwneud x 224 00:09:19,560 --> 00:09:22,400 ac y pa fath o newidynnau yn lle hynny? 225 00:09:22,400 --> 00:09:23,390 >> Gallech eu gwneud yn fyd-eang. 226 00:09:23,390 --> 00:09:27,560 Rhowch nhw ar frig y ffeil fel y gwnaethom, hyd yn oed yn y gêm o 15. 227 00:09:27,560 --> 00:09:28,890 Rydym yn defnyddio newidyn byd-eang. 228 00:09:28,890 --> 00:09:32,420 Ond yng nghyd-destun y gêm o 15, mae'n rhesymol i gael byd-eang 229 00:09:32,420 --> 00:09:37,170 Amrywiol cynrychioli'r bwrdd, oherwydd y cyfan o'r 15.c i gyd 230 00:09:37,170 --> 00:09:38,650 am weithredu'r gêm. 231 00:09:38,650 --> 00:09:41,470 Dyna beth y ffeil yn bodoli i wneud. 232 00:09:41,470 --> 00:09:44,170 >> Ond yn yr achos yma, dwi'n galw gyfnewid swyddogaeth. 233 00:09:44,170 --> 00:09:45,380 Rwyf am i gyfnewid dau newidyn. 234 00:09:45,380 --> 00:09:48,950 A dylai ddechrau teimlo'n unig flêr os yw'r ateb i bob un o'n 235 00:09:48,950 --> 00:09:51,300 problemau pan fyddwn yn rhedeg i mewn i gwmpas materion hyn yn ei gwneud yn fyd-eang. 236 00:09:51,300 --> 00:09:54,730 Oherwydd gyflym iawn ein rhaglen yn mynd i fod yn dipyn o lanast. 237 00:09:54,730 --> 00:09:57,760 Ac rydym yn gwneud hynny yn gynnil iawn o ganlyniad yn 15.c. 238 00:09:57,760 --> 00:10:00,470 >> Ond mae'n troi allan mae 'na ffordd well yn gyfan gwbl. 239 00:10:00,470 --> 00:10:05,600 Gadewch i mi mewn gwirionedd yn mynd yn ôl a dileu'r argraffu f, yn union i symleiddio'r cod hwn. 240 00:10:05,600 --> 00:10:09,160 A gadewch i mi yn cynnig y hyn, yn wir, yn ddrwg. 241 00:10:09,160 --> 00:10:15,990 Ond os wyf yn hytrach yn ychwanegu mewn rhai sêr a sêr, gallaf ei dro mae hyn yn lle hynny 242 00:10:15,990 --> 00:10:18,670 swyddogaeth i un sy'n mewn gwirionedd yn weithredol. 243 00:10:18,670 --> 00:10:25,020 >> Felly, gadewch i mi fynd yn ôl yma ac yn derbyn yn dweud sêr bob amser yn anodd, 244 00:10:25,020 --> 00:10:26,170 felly byddaf yn dweud sêr. 245 00:10:26,170 --> 00:10:27,660 'N annhymerus' jyst fess i fyny at yr un. 246 00:10:27,660 --> 00:10:28,190 Mae pob hawl. 247 00:10:28,190 --> 00:10:30,190 Ac yn awr, beth ydw i'n mynd i wneud yn lle hynny? 248 00:10:30,190 --> 00:10:34,130 >> Felly, yn gyntaf oll, yr wyf i'n mynd i bennu yn hytrach na basio int i 249 00:10:34,130 --> 00:10:37,980 y swyddogaeth cyfnewid, rwy'n yn lle hynny o fynd i ddweud seren int. 250 00:10:37,980 --> 00:10:39,170 Yn awr, beth mae'r seren yn dangos? 251 00:10:39,170 --> 00:10:41,970 Mae hyn yn y syniad o pwyntydd y Binky, cymeriad animeiddio clai, roedd 252 00:10:41,970 --> 00:10:43,465 cyfeirio at funud yn ôl. 253 00:10:43,465 --> 00:10:47,610 >> Felly, os ydym yn dweud seren int, ystyr mae hyn yn awr yn bod yn ddim yn mynd i fod yn 254 00:10:47,610 --> 00:10:49,110 basiwyd yn ôl ei werth. 255 00:10:49,110 --> 00:10:50,350 Dyw hi ddim yn mynd i gael ei gopïo i mewn 256 00:10:50,350 --> 00:10:54,700 Yn hytrach, y cyfeiriad y mae a yn mynd i gael eu trosglwyddo i mewn 257 00:10:54,700 --> 00:10:57,840 >> Felly, dwyn i gof bod tu mewn i'ch cyfrifiadur yn criw cyfan o gof, fel arall 258 00:10:57,840 --> 00:10:58,760 a elwir yn RAM. 259 00:10:58,760 --> 00:11:00,520 A dyna RAM yn unig yw criw cyfan o bytes. 260 00:11:00,520 --> 00:11:03,320 Felly, os yw eich Mac neu eich PC wedi dau gigabeit, mae gennych 2 261 00:11:03,320 --> 00:11:05,760 biliwn bytes o gof. 262 00:11:05,760 --> 00:11:08,440 >> Nawr, gadewch i ni dim ond mae'n debyg mai dim ond i gadw pethau neis ac yn drefnus, rydym yn 263 00:11:08,440 --> 00:11:09,450 pennu cyfeiriad - 264 00:11:09,450 --> 00:11:10,170 nifer - 265 00:11:10,170 --> 00:11:12,270 i bob beit o RAM yn eich cyfrifiadur. 266 00:11:12,270 --> 00:11:15,410 Mae'r beit cyntaf o'r rhai 2 biliwn yw drwy sero rhif. 267 00:11:15,410 --> 00:11:18,572 Yr un nesaf yw rhif un beit, rhif dau, yr holl ffordd i fyny, dot dot 268 00:11:18,572 --> 00:11:20,530 dot, i tua 2000000000. 269 00:11:20,530 --> 00:11:23,640 >> Felly, gallwch nifer o'r bytes y cof wrth eich cyfrifiadur. 270 00:11:23,640 --> 00:11:26,460 Felly, gadewch i ni gymryd yn ganiataol bod dyna beth ydym yn ei olygu gan gyfeiriad. 271 00:11:26,460 --> 00:11:31,360 Felly, pan fyddaf yn gweld int seren yn, beth sy'n mynd gael ei drosglwyddo i mewn i cyfnewid nawr yw'r 272 00:11:31,360 --> 00:11:32,830 cyfeiriad a. 273 00:11:32,830 --> 00:11:37,150 Nid yw ei werth, ond beth bynnag ei ​​post cyfeiriad yw, fel petai - 274 00:11:37,150 --> 00:11:38,810 ei leoliad yn RAM. 275 00:11:38,810 --> 00:11:41,250 >> Ac yn yr un modd ar gyfer b, yr wyf i'n mynd i ddweud yr un peth. 276 00:11:41,250 --> 00:11:42,720 Int, seren, b. 277 00:11:42,720 --> 00:11:46,350 Fel o'r neilltu, yn dechnegol y seren Gallai fynd mewn lleoliadau eraill. 278 00:11:46,350 --> 00:11:50,140 Ond byddwn yn safoni ar y seren yn dde nesaf at y math data. 279 00:11:50,140 --> 00:11:54,080 >> Felly cyfnewid llofnod yn awr yn golygu, yn rhoi i mi y cyfeiriad o int, ac yn galw 280 00:11:54,080 --> 00:11:55,400 sy'n mynd i'r afael a. 281 00:11:55,400 --> 00:11:58,690 Ac yn rhoi cyfeiriad arall o fy int a galw sy'n mynd i'r afael b. 282 00:11:58,690 --> 00:12:01,120 >> Ond yn awr fy cod yma yn newid. 283 00:12:01,120 --> 00:12:03,470 Oherwydd os wyf yn datgan dro int - 284 00:12:03,470 --> 00:12:05,580 sydd yn dal i fod yn int fath - 285 00:12:05,580 --> 00:12:08,700 ond yr wyf yn storio ynddo, pa fath o werth? 286 00:12:08,700 --> 00:12:12,870 I fod yn glir, a wyf yn rhoi i mewn gyda y cod fel y'i hysgrifennwyd ar hyn o bryd? 287 00:12:12,870 --> 00:12:14,360 >> Rwy'n rhoi'r lleoliad yn a. 288 00:12:14,360 --> 00:12:16,500 Ond nid wyf yn poeni am y lleoliad yn awr, dde? 289 00:12:16,500 --> 00:12:21,940 Temp yn bodoli dim ond trydedd cwpan Jess ' yn bodoli, i ba ddiben? 290 00:12:21,940 --> 00:12:23,090 I storio gwerth. 291 00:12:23,090 --> 00:12:24,830 Llaeth neu sudd oren. 292 00:12:24,830 --> 00:12:28,520 Ddim mewn gwirionedd storio cyfeiriad naill neu'r llall o'r pethau hynny, sy'n teimlo 293 00:12:28,520 --> 00:12:31,200 ychydig yn hurt yn y go iawn cyd-destun byd beth bynnag. 294 00:12:31,200 --> 00:12:34,990 >> Felly, mewn gwirionedd, yr hyn yr wyf am roi mewn adeiladau dros Nid yw cyfeiriad yn, ond mae'r 295 00:12:34,990 --> 00:12:36,180 cynnwys a. 296 00:12:36,180 --> 00:12:41,930 Felly, os a yn rhif fel 123, mae hyn yn y beit 123 o gof bod yn unig 297 00:12:41,930 --> 00:12:45,090 digwydd bod yn meddiannu, bod gwerth mewn yn digwydd bod yn meddiannu. 298 00:12:45,090 --> 00:12:49,040 >> Os ydw i eisiau mynd i'r cyfeiriad hwnnw, Mae angen i mi ddweud seren a. 299 00:12:49,040 --> 00:12:52,610 Yn yr un modd, os wyf yn newid yr hyn sydd yn y cyfeiriad yn, byddaf yn newid 300 00:12:52,610 --> 00:12:53,570 hwn i ddechrau. 301 00:12:53,570 --> 00:12:58,185 Os ydw i eisiau i storio yn yr hyn sydd yn y lleoliad a gyda beth sydd yn y lleoliad 302 00:12:58,185 --> 00:13:02,180 yn b, seren b seren. 303 00:13:02,180 --> 00:13:05,340 >> Felly, yn fyr, hyd yn oed os nad yw hyn yn hollol suddo i mewn eto - ac ni fyddwn yn disgwyl 304 00:13:05,340 --> 00:13:06,560 y byddai mor gyflym - 305 00:13:06,560 --> 00:13:11,100 sylweddoli bod yr holl rwy'n ei wneud yn prefixing sêr hyn at fy newidynnau, 306 00:13:11,100 --> 00:13:13,350 Nid ddywediad yn chrafangia 'r gwerthoedd. 307 00:13:13,350 --> 00:13:14,520 Peidiwch â newid y gwerthoedd. 308 00:13:14,520 --> 00:13:17,600 Ond yn hytrach, ewch i'r cyfeiriadau hynny a chael y gwerth. 309 00:13:17,600 --> 00:13:21,430 Ewch i'r cyfeiriad hwnnw a newid werth yno. 310 00:13:21,430 --> 00:13:25,500 >> Felly nawr gadewch i mi sgrolio yn ôl i fyny i ben, dim ond at atgyweiria y llinell yma, i 311 00:13:25,500 --> 00:13:27,690 newid y prototeip i gyd-fynd. 312 00:13:27,690 --> 00:13:30,280 Ond yr wyf yn ei angen nawr i wneud un peth arall. 313 00:13:30,280 --> 00:13:35,500 Reddfol, os ydw i wedi newid y mathau o ddadleuon y cyfnewid yn disgwyl, 314 00:13:35,500 --> 00:13:37,245 beth arall sydd angen i mi newid yn fy cod? 315 00:13:37,245 --> 00:13:39,750 316 00:13:39,750 --> 00:13:40,840 >> Pan fyddaf yn galw cyfnewid. 317 00:13:40,840 --> 00:13:43,340 Oherwydd ar hyn o bryd, beth ydw I fynd heibio i gyfnewid o hyd? 318 00:13:43,340 --> 00:13:47,450 Mae gwerth x a gwerth y, neu y llaeth a sudd oren. 319 00:13:47,450 --> 00:13:48,510 Ond nid wyf am wneud hynny. 320 00:13:48,510 --> 00:13:51,060 Rwyf yn lle hynny am eu trosglwyddo yn yr hyn? 321 00:13:51,060 --> 00:13:53,050 Mae lleoliad x a lleoliad y. 322 00:13:53,050 --> 00:13:55,300 Beth yw eu cyfeiriadau post, fel petai. 323 00:13:55,300 --> 00:13:57,600 >> Felly, er mwyn gwneud hynny, mae 'na ampersand. 324 00:13:57,600 --> 00:13:59,260 Ampersand math o swnio fel cyfeiriad. 325 00:13:59,260 --> 00:14:03,240 felly n, ampersand, y cyfeiriad o x, a chyfeiriad y. 326 00:14:03,240 --> 00:14:06,790 Felly, mae'n fwriadol ein bod yn defnyddio ampersands wrth alw y swyddogaeth, 327 00:14:06,790 --> 00:14:10,230 a sêr wrth ddatgan a phryd gweithredu'r swyddogaeth. 328 00:14:10,230 --> 00:14:14,220 >> A dim ond meddwl am ampersand gan fod y chyfeiriad y gweithredydd, a seren wrth i'r 329 00:14:14,220 --> 00:14:15,490 fynd yno gweithredydd - 330 00:14:15,490 --> 00:14:18,640 neu, yn fwy priodol, y weithredwr dereference. 331 00:14:18,640 --> 00:14:23,480 Felly, mae hynny'n llawer iawn o eiriau yn unig i yn dweud bod yn awr, gobeithio, yn cyfnewid yn mynd 332 00:14:23,480 --> 00:14:24,440 i fod yn gywir. 333 00:14:24,440 --> 00:14:26,550 >> Gadewch i mi fynd yn ei flaen ac yn gwneud - 334 00:14:26,550 --> 00:14:30,940 gadewch i ni mewn gwirionedd yn ail-enwi'r ffeil, rhag rhaglen hon yn dal i gael ei alw dim cyfnewid. 335 00:14:30,940 --> 00:14:33,240 Allaf hawlio y byddwn yn ei alw'n swap.c awr. 336 00:14:33,240 --> 00:14:35,670 Felly gwnewch, cyfnewid. 337 00:14:35,670 --> 00:14:37,520 Dot, slaes, cyfnewid. 338 00:14:37,520 --> 00:14:40,210 >> Ac yn awr yn wir, x yw 1, y mae 2. 339 00:14:40,210 --> 00:14:44,040 Ac yna, yn 2 x, y yn un ohonynt. 340 00:14:44,040 --> 00:14:46,500 Wel, gadewch i ni weld os na allwn wneud hyn yn ychydig bach yn wahanol o ran yr hyn sy'n 341 00:14:46,500 --> 00:14:47,180 digwydd yma. 342 00:14:47,180 --> 00:14:51,250 Yn gyntaf, gadewch i mi chwyddo i mewn ar ein tynnu sgrin yma. 343 00:14:51,250 --> 00:14:54,160 A gadewch i mi gynnig am funud - ac pryd bynnag y byddaf yn tynnu yma yn cael ei adlewyrchu 344 00:14:54,160 --> 00:14:58,660 fyny yno yn awr - gadewch i mi yn cynnig y dyma criw cyfan o gof, neu 345 00:14:58,660 --> 00:15:00,540 RAM, tu mewn fy nghyfrifiadur. 346 00:15:00,540 --> 00:15:04,140 >> A bydd hyn yn rhif brathu, gadewch i ni ddweud, 1. 347 00:15:04,140 --> 00:15:05,720 Bydd hyn yn bytes rhif 2. 348 00:15:05,720 --> 00:15:08,220 A byddaf yn gwneud criw cyfan yn fwy, ac yna griw o dot dot dotiau i 349 00:15:08,220 --> 00:15:10,880 yn dangos fod yna 2000000000 o'r pethau hyn. 350 00:15:10,880 --> 00:15:13,520 4, 5, ac yn y blaen. 351 00:15:13,520 --> 00:15:17,055 >> Felly mae pum bytes cyntaf o gof fy cyfrifiadur. 352 00:15:17,055 --> 00:15:17,560 Mae pob hawl? 353 00:15:17,560 --> 00:15:19,060 Ychydig iawn allan o 2 biliwn. 354 00:15:19,060 --> 00:15:21,120 Ond yn awr yr wyf i'n mynd i gynnig y canlynol. 355 00:15:21,120 --> 00:15:27,490 Rydw i'n mynd i gynnig bod x yn mynd i storio'r rhif 1, ac yn mynd y 356 00:15:27,490 --> 00:15:29,690 i storio rhif 2. 357 00:15:29,690 --> 00:15:35,000 A gadewch i mi fynd yn ei flaen yn awr ac yn cynrychioli gwerthoedd hyn fel a ganlyn. 358 00:15:35,000 --> 00:15:41,510 >> Gadewch i ni wneud hyn fel a ganlyn. 359 00:15:41,510 --> 00:15:42,870 Rhowch un eiliad i mi. 360 00:15:42,870 --> 00:15:44,150 Un eiliad. 361 00:15:44,150 --> 00:15:45,680 OK. 362 00:15:45,680 --> 00:15:47,560 Yr wyf am wneud hyn yn bach - 363 00:15:47,560 --> 00:15:50,440 gadewch i ni wneud hyn eto. 364 00:15:50,440 --> 00:15:53,250 Fel arall, yr wyf i'n mynd i ac yn defnyddio'r yr un niferoedd, yn anfwriadol, 365 00:15:53,250 --> 00:15:54,230 sawl gwaith. 366 00:15:54,230 --> 00:15:57,320 >> Felly, dim ond felly mae gennym wahanol rifau i siarad am, gadewch i ni galw beit hwn 367 00:15:57,320 --> 00:16:03,391 rhif 123, 124, 125, 126, a dot dot dot. 368 00:16:03,391 --> 00:16:08,400 A gadewch i mi hawlio nawr fy mod i'n mynd i rhoi'r gwerth o 1 yma, a gwerth 2 369 00:16:08,400 --> 00:16:11,990 yma, a elwir fel arall yn x ac y. 370 00:16:11,990 --> 00:16:15,300 Felly, dim ond fel y digwydd bod mae hyn yn x, mae hyn yn y. 371 00:16:15,300 --> 00:16:18,180 >> A dim ond gan rai cyfle ar hap, y cyfrifiadur, y system weithredu, 372 00:16:18,180 --> 00:16:21,890 ddigwyddodd i roi x yn y lleoliad rhif 123. 373 00:16:21,890 --> 00:16:25,590 Ac y daeth i ben i fyny yn y lleoliad 124 - 374 00:16:25,590 --> 00:16:26,330 damn iddo. 375 00:16:26,330 --> 00:16:28,700 Dylwn i fod wedi sefydlog hyn. 376 00:16:28,700 --> 00:16:34,040 O ddyn, ydw i'n wir eisiau gwneud hyn? 377 00:16:34,040 --> 00:16:37,340 Ydw, rwyf am i atgyweiria hon a b iawn am hyn heddiw. 378 00:16:37,340 --> 00:16:39,950 Mae'n ddrwg gennym, newydd ar hyn. 379 00:16:39,950 --> 00:16:45,020 >> 127, 131, a doeddwn i ddim am fod hyn yn cymhleth, ond pam wnes i newid y 380 00:16:45,020 --> 00:16:46,340 rhifau yno? 381 00:16:46,340 --> 00:16:48,360 Gan fy mod am i'r ints i mewn gwirionedd fod yn bedwar bytes. 382 00:16:48,360 --> 00:16:49,810 Felly, gadewch i ni fod rhefrol super am hyn. 383 00:16:49,810 --> 00:16:53,800 Felly, os 1 yn digwydd mynd i'r afael 123, y 2 yn mynd i fod yn y cyfeiriad 384 00:16:53,800 --> 00:16:55,730 127 oherwydd ei fod yn dim ond 4 byes i ffwrdd. 385 00:16:55,730 --> 00:16:56,210 Dyna i gyd. 386 00:16:56,210 --> 00:16:58,640 A byddwn yn anghofio am yr holl cyfeiriadau eraill yn y byd. 387 00:16:58,640 --> 00:17:03,320 >> Felly x yn y lleoliad 123, y mae yn y lleoliad 127. 388 00:17:03,320 --> 00:17:05,770 Ac yn awr, beth Fi 'n weithredol am ei wneud? 389 00:17:05,770 --> 00:17:10,099 Pan fyddaf yn galw cyfnewid yn awr, beth mewn gwirionedd yn mynd ymlaen? 390 00:17:10,099 --> 00:17:14,920 Wel, pan fydda i'n galw cyfnewid, dwi'n pasio mewn cyfeiriad x a chyfeiriad y. 391 00:17:14,920 --> 00:17:18,540 Felly, er enghraifft, os yw'r rhain yn ddau ddarn o bapur yn cynrychioli y ddwy 392 00:17:18,540 --> 00:17:23,510 dadleuon a a b i gyfnewid, beth ydw i mynd i ysgrifennu ar y cyntaf o'r rhain, 393 00:17:23,510 --> 00:17:27,720 yr wyf i'n mynd i alw cyfeirio ato fel? 394 00:17:27,720 --> 00:17:30,610 >> Yn union, 123. 395 00:17:30,610 --> 00:17:31,905 Felly, mae hyn allaf hawlio yn a. 396 00:17:31,905 --> 00:17:32,955 Mae hyn yn y paramedr a. 397 00:17:32,955 --> 00:17:35,856 Rwy'n rhoi'r cyfeiriad x i mewn 'na. 398 00:17:35,856 --> 00:17:38,152 >> Beth sy'n bod? 399 00:17:38,152 --> 00:17:40,890 >> Beth sy'n bod? 400 00:17:40,890 --> 00:17:41,190 >> Na, na. 401 00:17:41,190 --> 00:17:41,720 Mae hynny'n iawn. 402 00:17:41,720 --> 00:17:42,570 Dal yn dda, yn dal yn dda. 403 00:17:42,570 --> 00:17:43,530 Felly, mae hyn yn a. 404 00:17:43,530 --> 00:17:46,240 Ac yn awr ar yr ail ddarn o bapur, mae hyn yn mynd i fod yn b, a beth ydw i 405 00:17:46,240 --> 00:17:49,010 mynd i gael ei ysgrifennu ar darn hwn o bapur? 406 00:17:49,010 --> 00:17:50,080 127. 407 00:17:50,080 --> 00:17:53,720 >> Felly, yr unig beth sydd wedi newid ers ein trawiadol blaenorol o'r stori hon yw, 408 00:17:53,720 --> 00:17:58,590 yn hytrach na llythrennol 1 a 2, rwy'n mynd i basio yn 123 a 127. 409 00:17:58,590 --> 00:18:02,130 Ac yr wyf i'n awr yn mynd i roi'r rhain mewn y blwch hwn, iawn? 410 00:18:02,130 --> 00:18:04,640 Felly y blwch du bellach yn cynrychioli y swyddogaeth cyfnewid. 411 00:18:04,640 --> 00:18:07,230 >> Yn y cyfamser, gadewch i ni yn awr rywun gweithredu'r swyddogaeth cyfnewid. 412 00:18:07,230 --> 00:18:09,090 A fyddai rhywun yma hoffi i wirfoddoli? 413 00:18:09,090 --> 00:18:09,560 Dewch ar i fyny. 414 00:18:09,560 --> 00:18:11,080 Beth yw eich enw? 415 00:18:11,080 --> 00:18:11,460 Charlie. 416 00:18:11,460 --> 00:18:12,080 Mae pob hawl, Charlie. 417 00:18:12,080 --> 00:18:14,810 Dewch ar i fyny. 418 00:18:14,810 --> 00:18:17,310 >> Felly Charlie yn mynd i chwarae rôl ein blwch du. 419 00:18:17,310 --> 00:18:21,460 A Charlie, beth hoffwn i chi ei wneud yn awr yn gweithredu cyfnewid yn y fath fodd 420 00:18:21,460 --> 00:18:25,320 hynny, o ystyried y ddau gyfeiriad, oeddech yn mynd mewn gwirionedd 421 00:18:25,320 --> 00:18:26,330 i newid y gwerthoedd. 422 00:18:26,330 --> 00:18:28,290 A byddaf yn sibrwd yn eich clust sut i redeg y teledu yma. 423 00:18:28,290 --> 00:18:29,930 >> Felly, mynd yn ei flaen, ac yr ydych yn y blwch du. 424 00:18:29,930 --> 00:18:30,920 Cyrraedd yno. 425 00:18:30,920 --> 00:18:34,054 Pa werthoedd ydych yn gweld ar gyfer a, a pa werthoedd yn eich barn chi am b? 426 00:18:34,054 --> 00:18:36,740 >> CHARLIE: a yw 123 a b yw 127. 427 00:18:36,740 --> 00:18:37,530 >> DAVID Malan: OK, yn union. 428 00:18:37,530 --> 00:18:38,940 Nawr oedi yno am ychydig funudau'n. 429 00:18:38,940 --> 00:18:41,680 Y peth cyntaf y byddwch yn mynd i wneud yn awr, yn ôl y cod - sy'n 430 00:18:41,680 --> 00:18:43,220 'N annhymerus' nawr dynnu i fyny ar y sgrin - 431 00:18:43,220 --> 00:18:46,750 yn mynd i fod i ddyrannu ychydig ychydig o gof a elwir dros dro. 432 00:18:46,750 --> 00:18:48,850 Felly, yr wyf i'n mynd i fynd yn ei flaen a rhoi'r cof i chi. 433 00:18:48,850 --> 00:18:52,210 >> Felly, mae hyn yn mynd i fod trydydd newidyn bod gennych hygyrch i 434 00:18:52,210 --> 00:18:54,080 eich enw dros dro. 435 00:18:54,080 --> 00:18:57,120 A beth ydych chi'n mynd i ysgrifennu ar y darn o bapur dros dro? 436 00:18:57,120 --> 00:19:02,524 437 00:19:02,524 --> 00:19:03,470 >> CHARLIE: awgrymiadau, dde? 438 00:19:03,470 --> 00:19:04,790 >> DAVID Malan: OK, wel reidrwydd awgrymiadau. 439 00:19:04,790 --> 00:19:07,230 Felly, y llinell o god fy mod i wedi hamlygu ar yr ochr dde, 440 00:19:07,230 --> 00:19:07,900 gadewch i ni ddechrau yno. 441 00:19:07,900 --> 00:19:08,890 Mae'n dweud seren a. 442 00:19:08,890 --> 00:19:11,670 Felly ar hyn o bryd yn cael ei storio y rhif 123. 443 00:19:11,670 --> 00:19:16,660 A dim ond yn reddfol, beth oedd seren 123 yn ei olygu? 444 00:19:16,660 --> 00:19:21,630 >> Ond yn benodol, os yw 123, seren yn golygu beth? 445 00:19:21,630 --> 00:19:22,560 Mae gwerth a. 446 00:19:22,560 --> 00:19:24,580 Neu yn fwy hamddenol, yn mynd yno. 447 00:19:24,580 --> 00:19:28,620 Felly, gadewch i mi yn cynnig y, cynnal y mae yn eich llaw, mynd yn ei flaen a thrin y 448 00:19:28,620 --> 00:19:29,430 fel pe ei fod yn map. 449 00:19:29,430 --> 00:19:32,940 A cherdded eich hun drosodd i'r cyfrifiadur cof, a dod o hyd i ni beth sy'n 450 00:19:32,940 --> 00:19:36,520 yn y lleoliad 123. 451 00:19:36,520 --> 00:19:37,720 Yn union. 452 00:19:37,720 --> 00:19:41,100 >> Felly, rydym yn gweld yn y lleoliad 123 hyn, yn amlwg? 453 00:19:41,100 --> 00:19:44,240 Iawn, felly pa werth yn awr yn cael eich mynd i roi i mewn i dro? 454 00:19:44,240 --> 00:19:44,750 Yn union. 455 00:19:44,750 --> 00:19:45,600 Felly, mynd yn ei flaen a gwneud hynny. 456 00:19:45,600 --> 00:19:51,280 Ac ysgrifennu rhif 1 ar y darn o bapur sy'n cael ei dwyn y teitl dros dro ar hyn o bryd. 457 00:19:51,280 --> 00:19:53,540 >> Ac yn awr y cam nesaf y ydych yn mynd i weithredu 458 00:19:53,540 --> 00:19:54,310 yn mynd i fod yr hyn. 459 00:19:54,310 --> 00:19:57,820 Wel, ar yr ochr dde y llinell nesaf o god yn seren b. b, o 460 00:19:57,820 --> 00:19:59,260 gwrs, storio cyfeiriad. 461 00:19:59,260 --> 00:20:02,270 Sy'n mynd i'r afael 127. 462 00:20:02,270 --> 00:20:06,620 Star b golygu'r hyn, casually siarad? 463 00:20:06,620 --> 00:20:08,700 >> Ewch i'r lleoliad hwnnw. 464 00:20:08,700 --> 00:20:14,988 Felly, mynd yn ei flaen a dod o hyd i ni beth sydd yn y lleoliad 127. 465 00:20:14,988 --> 00:20:15,480 OK. 466 00:20:15,480 --> 00:20:19,170 Wrth gwrs, yn y lleoliad 127, yn dal yn werth 2. 467 00:20:19,170 --> 00:20:24,060 Felly, beth ydych chi'n mynd nawr siop yn beth bynnag sydd yn y lleoliad mewn? 468 00:20:24,060 --> 00:20:26,860 Felly seren modd mynd i'r lleoliad a. 469 00:20:26,860 --> 00:20:29,770 Beth yw'r lleoliad a? 470 00:20:29,770 --> 00:20:30,430 >> Yn union. 471 00:20:30,430 --> 00:20:34,190 Felly nawr, os ydych am newid beth sydd yn y lleoliad hwnnw - 472 00:20:34,190 --> 00:20:36,470 'N annhymerus' mynd yn ei flaen ac yn rhedeg y rhwbiwr yma. 473 00:20:36,470 --> 00:20:37,760 Ac yn awr roi yn ôl ar y brwsh. 474 00:20:37,760 --> 00:20:42,190 Pa rif yr ydych yn mynd i ysgrifennu yn y blwch gwag nawr? 475 00:20:42,190 --> 00:20:42,850 >> Yn union. 476 00:20:42,850 --> 00:20:46,470 Felly mae hyn yn llinell o god, i fod yn glir - gadewch mi oedi beth Charlie yn ei wneud a 477 00:20:46,470 --> 00:20:51,730 nodi yma, beth mae'n ei wneud yn unig yw ysgrifennu i mewn i'r blwch ar leoliad 123 478 00:20:51,730 --> 00:20:55,150 y gwerth a oedd yn flaenorol yn b. 479 00:20:55,150 --> 00:20:59,140 Ac felly rydym wedi rhoi ar waith yn awr yn wir yr ail linell o god. 480 00:20:59,140 --> 00:21:01,920 >> Nawr yn anffodus, mae dal yn un llinell ar ôl. 481 00:21:01,920 --> 00:21:04,900 Nawr, beth sydd yn dros dro, yn llythrennol? 482 00:21:04,900 --> 00:21:06,200 Mae'n amlwg y rhif un. 483 00:21:06,200 --> 00:21:07,020 Nid yw hynny'n cyfeiriad. 484 00:21:07,020 --> 00:21:09,380 Mae'n dim ond nifer, math o newidyn o wythnos un. 485 00:21:09,380 --> 00:21:13,520 >> Ac yn awr pan fyddwch yn dweud seren b, mae hynny'n golygu mynd i'r cyfeiriad b, sydd o 486 00:21:13,520 --> 00:21:15,090 cwrs yma. 487 00:21:15,090 --> 00:21:16,020 Felly, ar ôl i chi gyrraedd yno - 488 00:21:16,020 --> 00:21:18,320 'N annhymerus' mynd yn ei flaen ac yn dileu hyn sydd mewn gwirionedd yn yno - a beth yr ydych yn 489 00:21:18,320 --> 00:21:20,820 mynd i ysgrifennu nawr mewn 127 lleoliad? 490 00:21:20,820 --> 00:21:22,010 >> CHARLIE: Temp, sy'n un. 491 00:21:22,010 --> 00:21:23,430 >> DAVID Malan: Temp, sy'n un. 492 00:21:23,430 --> 00:21:25,670 A beth sy'n digwydd i dro yn y diwedd? 493 00:21:25,670 --> 00:21:26,600 Wel, nid ydym yn wir yn gwybod. 494 00:21:26,600 --> 00:21:27,420 Nid ydym yn wir gofal. 495 00:21:27,420 --> 00:21:31,090 Unrhyw amser rydym wedi gweithredu swyddogaeth hyd yn hyn, unrhyw newidynnau lleol sydd gennych 496 00:21:31,090 --> 00:21:31,890 yn wir yn lleol. 497 00:21:31,890 --> 00:21:33,060 Ac maent ond yn diflannu. 498 00:21:33,060 --> 00:21:35,040 Maent yn hawlio gan y gweithredu system yn y pen draw. 499 00:21:35,040 --> 00:21:39,800 >> Felly, y ffaith fod dros dro hyd, y mae'r Gwerth 1 yn fath o sylfaenol 500 00:21:39,800 --> 00:21:41,150 anniddorol i ni. 501 00:21:41,150 --> 00:21:43,100 Mae pob hawl, felly rownd o gymeradwyaeth pe gallem i Charlie. 502 00:21:43,100 --> 00:21:46,400 Gwneud yn dda iawn. 503 00:21:46,400 --> 00:21:51,520 >> Mae pob hawl, felly beth yn fwy mae hyn yn golygu y gallwn ni ei wneud? 504 00:21:51,520 --> 00:21:54,400 Felly, mae'n troi allan ein bod wedi dweud ychydig o gorwedd gwyn 505 00:21:54,400 --> 00:21:55,540 ers peth amser. 506 00:21:55,540 --> 00:21:59,990 Yn wir, mae'n ymddangos fod llinyn, i gyd y tro hwn, nid mewn gwirionedd yn 507 00:21:59,990 --> 00:22:02,190 dilyniant o gymeriadau fel y cyfryw. 508 00:22:02,190 --> 00:22:03,980 Mae'n fath o yw bod yn reddfol. 509 00:22:03,980 --> 00:22:08,270 >> Ond yn dechnegol siarad, llinyn yn math data yr ydym yn datgan tu mewn 510 00:22:08,270 --> 00:22:12,170 y CS50 llyfrgell i symleiddio'r byd am yr ychydig wythnosau cyntaf o ddosbarth. 511 00:22:12,170 --> 00:22:20,130 Beth llinyn mewn gwirionedd yn y cyfeiriad o gymeriad rhywle yn RAM. 512 00:22:20,130 --> 00:22:25,530 Mae llinyn mewn gwirionedd yn nifer, fel 123 neu 127, mae hynny'n digwydd i ddiffinio 513 00:22:25,530 --> 00:22:28,420 lle mae llinyn yn dechrau yn cof eich cyfrifiadur. 514 00:22:28,420 --> 00:22:31,870 >> Ond nid yw'n cynrychioli'r llinyn, fel y cyfryw, ei hun. 515 00:22:31,870 --> 00:22:33,460 A gallwn weld hyn fel a ganlyn. 516 00:22:33,460 --> 00:22:35,980 Gadewch i mi fynd yn ei flaen ac yn agor i fyny rhywfaint o cod sy'n ymysg 517 00:22:35,980 --> 00:22:38,340 enghreifftiau cod ffynhonnell heddiw. 518 00:22:38,340 --> 00:22:42,225 Ac yr wyf i'n mynd i fynd yn ei flaen ac yn agor i fyny, gadewch i ni ddweud, cymharu-0.c. 519 00:22:42,225 --> 00:22:44,830 520 00:22:44,830 --> 00:22:48,790 Mae hon yn rhaglen buggy sy'n mynd i'w gweithredu fel a ganlyn. 521 00:22:48,790 --> 00:22:49,040 >> Yn gyntaf. 522 00:22:49,040 --> 00:22:50,420 Dw i'n mynd i ddweud rhywbeth. 523 00:22:50,420 --> 00:22:52,660 Yna mi i'n mynd i fynd yn ei flaen a cael llinyn gan y defnyddiwr 524 00:22:52,660 --> 00:22:53,750 yn y llinell nesaf. 525 00:22:53,750 --> 00:22:55,370 Yna mi i'n mynd i ddweud eto. 526 00:22:55,370 --> 00:22:57,540 Yna mi i'n mynd i gael un arall llinyn gan y defnyddiwr. 527 00:22:57,540 --> 00:23:00,390 >> Ac yn sylwi, rwy'n yn dangos un o'r llinynnau mewn amrywiol o'r enw, ac 528 00:23:00,390 --> 00:23:03,040 arall o linynnau hyn mewn newidyn o'r enw t. 529 00:23:03,040 --> 00:23:07,480 Ac yn awr yr wyf i'n mynd i wneud cais, yn fawr rhesymol, os s hafal hafal t, 530 00:23:07,480 --> 00:23:08,940 y tannau yr un fath. 531 00:23:08,940 --> 00:23:09,970 Rydych yn teipio yr un peth. 532 00:23:09,970 --> 00:23:11,830 Arall, yn y tannau yn Nid yr un peth. 533 00:23:11,830 --> 00:23:15,440 >> Wedi'r cyfan, os ydym mewnbwn dau ints, dau chars, dau fflotiau, dau dyblau, unrhyw un o 534 00:23:15,440 --> 00:23:18,400 y mathau o ddata rydym wedi trafod hyd yma eu cymharu - 535 00:23:18,400 --> 00:23:22,070 cofio rydym yn gwneud yn glir iawn beth amser yn ôl nad ydych yn gwneud hyn, gan fod 536 00:23:22,070 --> 00:23:25,840 arwydd cyfartal unigol, wrth gwrs, y gweithredwr aseiniad. 537 00:23:25,840 --> 00:23:26,820 Felly, byddai hynny'n bug. 538 00:23:26,820 --> 00:23:29,260 >> Rydym yn defnyddio yr arwydd hafal cyfartal, sydd yn wir yn cymharu 539 00:23:29,260 --> 00:23:31,050 pethau ar gyfer gwir gydraddoldeb. 540 00:23:31,050 --> 00:23:32,275 Ond yr wyf yn hawlio hyn yn bygi. 541 00:23:32,275 --> 00:23:37,400 Os byddaf yn mynd yn ei flaen ac yn gwneud cymharu sero, ac yna yn dot slaes cymharu sero. 542 00:23:37,400 --> 00:23:39,700 Ac yr wyf yn teipio i mewn, gadewch i ni ddweud, helo. 543 00:23:39,700 --> 00:23:41,590 Ac yna gadewch i ni ddweud helo eto. 544 00:23:41,590 --> 00:23:46,040 Llythrennol yr un peth, y cyfrifiadur hawliadau wyf deipio pethau gwahanol. 545 00:23:46,040 --> 00:23:47,640 >> Nawr efallai Fi jyst gamdeipio'r enw rhywbeth. 546 00:23:47,640 --> 00:23:49,910 'N annhymerus' teipio fy enw hyn o bryd. 547 00:23:49,910 --> 00:23:52,580 Yr wyf yn golygu, helo. 548 00:23:52,580 --> 00:23:54,770 Helo. 549 00:23:54,770 --> 00:23:57,360 Mae'n wahanol bob tro. 550 00:23:57,360 --> 00:23:58,430 >> Wel, pam hynny? 551 00:23:58,430 --> 00:24:00,140 Beth sy'n digwydd mewn gwirionedd o dan y cwfl? 552 00:24:00,140 --> 00:24:03,270 Wel, beth sy'n digwydd mewn gwirionedd o dan y cwfl yn y llinyn, yna 553 00:24:03,270 --> 00:24:07,410 Yr wyf deipio yn y tro cyntaf, er enghraifft yw'r gair helo, wrth gwrs. 554 00:24:07,410 --> 00:24:11,660 Ond os ydym yn eu cynrychioli hyn o dan y cwfl, dwyn i gof bod 555 00:24:11,660 --> 00:24:13,470 llinyn mewn arae. 556 00:24:13,470 --> 00:24:15,040 Ac rydym wedi dweud hynny yn y gorffennol. 557 00:24:15,040 --> 00:24:20,200 >> Felly os wyf yn tynnu bod amrywiaeth fel hyn, dwi'n mynd i gynrychioli rhywbeth eithaf 558 00:24:20,200 --> 00:24:23,030 debyg i'r hyn a wnaethom funud yn ôl. 559 00:24:23,030 --> 00:24:25,390 Ac mae mewn gwirionedd yn rhywbeth arbennig yma, hefyd. 560 00:24:25,390 --> 00:24:28,090 Beth wnaethon ni benderfynu oedd yn ddiwedd pob llinyn? 561 00:24:28,090 --> 00:24:30,760 Yeah, mae hyn yn sero slaes, sydd yn dim ond y ffordd o gynrychioli, 562 00:24:30,760 --> 00:24:33,610 llythrennol, 00,000,000. 563 00:24:33,610 --> 00:24:35,680 Wyth 0 ddarnau yn olynol. 564 00:24:35,680 --> 00:24:37,610 >> Nid wyf yn gwybod, a dweud y gwir, beth sydd ar ôl hyn. 565 00:24:37,610 --> 00:24:40,090 Dyna dim ond bagad mwy o RAM tu mewn fy nghyfrifiadur. 566 00:24:40,090 --> 00:24:40,970 Ond mae hyn yn arae. 567 00:24:40,970 --> 00:24:42,260 Rydym yn siarad am araeau o'r blaen. 568 00:24:42,260 --> 00:24:45,010 Ac rydym fel arfer yn siarad am araeau fel leoliad sero, 569 00:24:45,010 --> 00:24:46,580 yna un, yna ddau. 570 00:24:46,580 --> 00:24:47,950 Ond dim ond er hwylustod. 571 00:24:47,950 --> 00:24:49,380 A bod yn hollol cymharol. 572 00:24:49,380 --> 00:24:53,010 >> Pan fyddwch chi'n mewn gwirionedd yn cael cof o'r y cyfrifiadur, mae'n wrth gwrs unrhyw 573 00:24:53,010 --> 00:24:55,450 2000000000 rhai bytes rhyfedd, o bosibl. 574 00:24:55,450 --> 00:24:59,100 Felly mewn gwirionedd o dan y cwfl, yr holl amser hwn, ie. 575 00:24:59,100 --> 00:25:01,670 Gallai hyn yn dda iawn fod yn sero braced. 576 00:25:01,670 --> 00:25:04,780 Ond os ydych yn cloddio hyd yn oed yn ddyfnach o dan y cwfl, mae hynny'n wir 577 00:25:04,780 --> 00:25:07,000 mynd i'r afael rhif 123. 578 00:25:07,000 --> 00:25:09,150 Mae hyn yn gyfeiriad 124. 579 00:25:09,150 --> 00:25:11,040 Mae hyn yn gyfeiriad 125. 580 00:25:11,040 --> 00:25:12,540 >> A doeddwn i ddim sgriw i fyny y tro hwn. 581 00:25:12,540 --> 00:25:15,840 Mae'r rhain yn awr yn un bytes ar wahân am ba reswm? 582 00:25:15,840 --> 00:25:17,930 Pa mor fawr yw golosg? 583 00:25:17,930 --> 00:25:19,170 Mae torgoch yn un beit. 584 00:25:19,170 --> 00:25:20,570 Mae int yn nodweddiadol pedwar bytes. 585 00:25:20,570 --> 00:25:24,850 Felly dyna pam yr wyf yn ei wneud yn 123, 127, 131 ac yn y blaen. 586 00:25:24,850 --> 00:25:27,560 Nawr gallaf gadw y math symlach a dim ond gwneud ac 1. 587 00:25:27,560 --> 00:25:30,510 Ac mae hyn yn awr beth sy'n digwydd mewn gwirionedd ymlaen o dan y cwfl. 588 00:25:30,510 --> 00:25:37,760 >> Felly, pan fyddwch yn datgan rhywbeth fel hyn, llinyn, mae hyn mewn gwirionedd - 589 00:25:37,760 --> 00:25:39,170 mae'n troi allan - 590 00:25:39,170 --> 00:25:41,190 seren torgoch. 591 00:25:41,190 --> 00:25:44,640 Seren, wrth gwrs, yn golygu gyfeiriad, pwyntydd aka. 592 00:25:44,640 --> 00:25:46,200 Felly mae'n y cyfeiriad o rywbeth. 593 00:25:46,200 --> 00:25:47,510 Beth yw cyfeiriad? 594 00:25:47,510 --> 00:25:47,760 >> Wel - 595 00:25:47,760 --> 00:25:51,680 Fi yw'r unig un sy'n gallu gweld yr union pwynt pwysig fy mod yn gwneud, neu'n meddwl 596 00:25:51,680 --> 00:25:52,560 Fy mod yn gwneud. 597 00:25:52,560 --> 00:25:55,270 Felly llinyn - 598 00:25:55,270 --> 00:25:57,180 y peth trist yw gen i fonitro iawn yno lle rwy'n 599 00:25:57,180 --> 00:25:58,100 allai fod wedi gweld hynny. 600 00:25:58,100 --> 00:26:00,990 >> Mae pob hawl, felly llinyn yw hyn Rwy'n datgan o'r blaen. 601 00:26:00,990 --> 00:26:04,600 Ond mae'n troi allan, diolch i ychydig hud yn y llyfrgell CS50 hwn, mae'r holl 602 00:26:04,600 --> 00:26:08,780 llinyn amser yn llythrennol bod yn seren torgoch. 603 00:26:08,780 --> 00:26:11,310 Mae'r seren eto yn golygu pwyntydd neu gyfeiriad. 604 00:26:11,310 --> 00:26:14,180 Mae'r ffaith ei fod wedi bob ochr i'r gair torgoch yn golygu ei fod yn y 605 00:26:14,180 --> 00:26:15,970 cyfeiriad y cymeriad. 606 00:26:15,970 --> 00:26:23,100 >> Felly, os yn cael ei alw llinyn, ac yr wyf yn teipio yn H-E-L-L-O, yn cynnig yn awr yr hyn sydd wedi cael 607 00:26:23,100 --> 00:26:27,330 llinyn llythrennol bod yn dychwelyd yr holl y tro hwn, er ein bod i wedi yn hytrach 608 00:26:27,330 --> 00:26:29,980 gorsymleiddio y byd? 609 00:26:29,980 --> 00:26:33,310 Beth mae cael llinyn mewn gwirionedd dychwelyd fel ei werth dychwelyd? 610 00:26:33,310 --> 00:26:35,830 611 00:26:35,830 --> 00:26:38,720 >> 123 yn yr achos hwn, er enghraifft. 612 00:26:38,720 --> 00:26:42,630 Rydym eisoes wedi dweud bod yn cael llinyn yn syml yn dychwelyd llinyn, dilyniant o 613 00:26:42,630 --> 00:26:43,300 cymeriadau. 614 00:26:43,300 --> 00:26:44,790 Ond mae hynny'n dipyn o gelwydd gwyn. 615 00:26:44,790 --> 00:26:48,010 Mae'r ffordd yn cael llinyn mewn gwirionedd yn gweithio o dan y cwfl a yw'n cael 616 00:26:48,010 --> 00:26:48,930 llinyn gan y defnyddiwr. 617 00:26:48,930 --> 00:26:51,530 Mae'n Plops y cymeriadau ef neu hi fathau yn y cof. 618 00:26:51,530 --> 00:26:54,680 Mae'n rhoi sero slaes ar y diwedd o'r rhai a dilyniant o gymeriadau. 619 00:26:54,680 --> 00:26:57,310 >> Ond yna beth mae cael llinyn dychwelyd llythrennol? 620 00:26:57,310 --> 00:27:02,710 Mae'n llythrennol yn dychwelyd y cyfeiriad y bytes cyntaf yn y RAM a 621 00:27:02,710 --> 00:27:04,130 ei ddefnyddio ar gyfer y nerth. 622 00:27:04,130 --> 00:27:07,500 Ac mae'n troi allan mai dim ond drwy ddychwelyd cyfeiriad unigol o'r 623 00:27:07,500 --> 00:27:12,120 cymeriad cyntaf yn y llinyn, hynny yw ddigonol ar gyfer dod o hyd y cyfan o'r 624 00:27:12,120 --> 00:27:12,630 y llinyn. 625 00:27:12,630 --> 00:27:16,930 >> Mewn geiriau eraill, gael nid llinyn oes gan i ddychwelyd 123 a 124 a 125. 626 00:27:16,930 --> 00:27:19,950 Nid oes rhaid i roi hir i mi rhestr o'r holl bytes sy'n 627 00:27:19,950 --> 00:27:20,740 fy llinyn yn ei ddefnyddio. 628 00:27:20,740 --> 00:27:22,670 Oherwydd bod un, maen nhw i gyd gefn wrth gefn. 629 00:27:22,670 --> 00:27:28,160 A dau, yn seiliedig ar y cyfeiriad cyntaf, yr wyf yn Gall chyfrif i maes lle y llinyn yn dod i ben. 630 00:27:28,160 --> 00:27:29,910 Sut? 631 00:27:29,910 --> 00:27:33,490 >> Mae cymeriad null arbennig, y slaes sero ar y diwedd. 632 00:27:33,490 --> 00:27:35,430 Felly, mewn geiriau eraill, os byddwch yn pasio o gwmpas - 633 00:27:35,430 --> 00:27:36,530 tu mewn newidynnau - 634 00:27:36,530 --> 00:27:41,300 cyfeiriad a golosg, ac yr ydych yn tybio hynny ar ddiwedd unrhyw llinyn, unrhyw 635 00:27:41,300 --> 00:27:45,040 dilyniant o gymeriadau wrth i ni bodau dynol meddwl o linynnau, os ydych yn cymryd yn ganiataol bod 636 00:27:45,040 --> 00:27:48,600 ar ddiwedd unrhyw llinyn o'r fath mae sero slaes, rydych yn euraidd. 637 00:27:48,600 --> 00:27:52,430 Oherwydd y gallwch bob amser yn dod o hyd i ddiwedd y llinyn. 638 00:27:52,430 --> 00:27:54,870 >> Nawr beth sy'n digwydd mewn gwirionedd, yna mynd ymlaen yn y rhaglen hon? 639 00:27:54,870 --> 00:27:59,990 Pam fod y rhaglen hon, cymharu-0.c, bygi? 640 00:27:59,990 --> 00:28:01,690 Beth mewn gwirionedd yn cael ei gymharu? 641 00:28:01,690 --> 00:28:02,420 Yeah? 642 00:28:02,420 --> 00:28:05,000 >> MYFYRIWR: [Anghlywadwy]. 643 00:28:05,000 --> 00:28:05,730 >> DAVID Malan: Yn union. 644 00:28:05,730 --> 00:28:08,350 Mae'n cymharu y lleoliadau y llinynnau. 645 00:28:08,350 --> 00:28:12,420 Felly, os bydd y defnyddiwr wedi teipio helo unwaith, fel y gwneuthum, efallai y cof yn y pen draw 646 00:28:12,420 --> 00:28:13,430 yn edrych fel hyn. 647 00:28:13,430 --> 00:28:18,210 Os hynny mathau y defnyddiwr yn helo eto, ond drwy ffonio cael llinyn eto, c yw 648 00:28:18,210 --> 00:28:21,800 nid yn arbennig glyfar oni bai eich bod yn addysgu ei fod yn glyfar yn ôl cod ysgrifennu. 649 00:28:21,800 --> 00:28:22,430 >> C - 650 00:28:22,430 --> 00:28:23,860 a chyfrifiaduron yn fwy cyffredinol - 651 00:28:23,860 --> 00:28:27,370 os ydych yn teipio yn y gair helo eto, eich bod yn gwybod beth rydych chi'n mynd i gael. 652 00:28:27,370 --> 00:28:31,480 Ydych ond yn mynd i gael ail amrywiaeth o gof hynny, wrth gwrs, yn digwydd yn 653 00:28:31,480 --> 00:28:35,510 storio H-E-L-L-O ac yn y blaen. 654 00:28:35,510 --> 00:28:38,240 >> Mae'n mynd i edrych yr un fath i ein pobl, ond mae cyfeiriad hwn 655 00:28:38,240 --> 00:28:39,460 Efallai na fydd 123. 656 00:28:39,460 --> 00:28:42,470 Gallai dim ond fel y digwydd bod y system weithredu wedi rhai sydd ar gael 657 00:28:42,470 --> 00:28:45,430 lle er enghraifft yn y lleoliad - 658 00:28:45,430 --> 00:28:49,820 gadewch i ni ddweud rhywbeth mympwyol, fel hyn yn lleoliad 200. 659 00:28:49,820 --> 00:28:51,620 Ac mae hyn yn lleoliad 201. 660 00:28:51,620 --> 00:28:53,060 Ac mae hyn yn lleoliad 202. 661 00:28:53,060 --> 00:28:55,730 Nid oes gennym unrhyw syniad ble mae hynny'n mynd i fod yn y cof. 662 00:28:55,730 --> 00:28:59,110 >> Ond beth mae hyn yn ei olygu yw bod yr hyn sy'n mynd i gael eu storio yn y pen draw yn s? 663 00:28:59,110 --> 00:29:00,750 Y rhif 123. 664 00:29:00,750 --> 00:29:04,860 Beth sy'n mynd i gael eu storio mewn t, yn yr enghraifft hon mympwyol? 665 00:29:04,860 --> 00:29:06,300 Y rhif 200. 666 00:29:06,300 --> 00:29:11,410 A hynny i gyd yn golygu hynny yn amlwg, Nid yw 123 yn gyfartal 200. 667 00:29:11,410 --> 00:29:14,940 Ac felly os yw cyflwr byth gwerthuso i wir. 668 00:29:14,940 --> 00:29:18,430 Gan fod llinyn get yn defnyddio gwahanol darnau o gof bob tro. 669 00:29:18,430 --> 00:29:20,360 >> Nawr gallwn weld hyn eto yn enghraifft arall. 670 00:29:20,360 --> 00:29:23,764 Gadewch i mi fynd yn ei flaen ac yn agor i fyny chopi-0.c. 671 00:29:23,764 --> 00:29:28,770 Yr wyf yn honni bod yr enghraifft hon yn mynd i geisio - ond methu - gallwch gopïo dau llinynnau 672 00:29:28,770 --> 00:29:29,910 fel a ganlyn. 673 00:29:29,910 --> 00:29:31,730 >> Dw i'n mynd i ddweud rhywbeth i'r defnyddiwr. 674 00:29:31,730 --> 00:29:34,490 Yna yr wyf i'n mynd i gael llinyn a galw s. 675 00:29:34,490 --> 00:29:36,400 Ac yn awr, yr wyf i'n gwneud gwiriad hwn yma. 676 00:29:36,400 --> 00:29:37,990 Rydym yn sôn am hyn ychydig yn ôl. 677 00:29:37,990 --> 00:29:42,490 Ond pan y gallai gael llinyn null dychwelyd, gymeriad arbennig arall, neu arbennig 678 00:29:42,490 --> 00:29:45,050 symbol gadewch i ni ddweud. 679 00:29:45,050 --> 00:29:45,900 Os yw'n allan o gof. 680 00:29:45,900 --> 00:29:48,970 >> Er enghraifft, os yw'r defnyddiwr yn wirioneddol bod yn anodd a mathau o erchyll 681 00:29:48,970 --> 00:29:51,220 nifer o gymeriadau yn y bysellfwrdd a hits Enter. 682 00:29:51,220 --> 00:29:54,580 Os bydd y nifer o gymeriadau nid yn unig all ffitio i mewn RAM am ba bynnag crazy 683 00:29:54,580 --> 00:29:57,820 reswm, yn dda yn cael gallai llinyn yn dda iawn dychwelyd null. 684 00:29:57,820 --> 00:30:01,080 >> Neu os yw eich rhaglen ei hun yn gwneud llawer o bethau eraill ac nid dim ond 685 00:30:01,080 --> 00:30:03,790 Nid yw digon o gof ar gyfer pedwarawd llinynnol get i lwyddo, efallai yn dod i ben 686 00:30:03,790 --> 00:30:05,240 i fyny dychwelyd null. 687 00:30:05,240 --> 00:30:07,160 Ond gadewch i ni fod yn fwy manwl gywir ynghylch beth mae hyn yn. 688 00:30:07,160 --> 00:30:10,280 Beth yw s yn fath data mewn gwirionedd? 689 00:30:10,280 --> 00:30:11,610 Seren torgoch. 690 00:30:11,610 --> 00:30:14,560 >> Felly, mae'n troi allan nawr gallwn croen yn ôl yr haen o null. 691 00:30:14,560 --> 00:30:17,500 Troi allan, null yw - ie, yn amlwg symbol arbennig. 692 00:30:17,500 --> 00:30:19,190 Ond beth yw e mewn gwirionedd? 693 00:30:19,190 --> 00:30:25,220 Really, null yn unig yw symbol yr ydym yn pobl yn eu defnyddio i gynrychioli sero hefyd. 694 00:30:25,220 --> 00:30:29,010 >> Felly, mae'r awduron C, a chyfrifiaduron yn fwy cyffredinol, penderfynodd flynyddoedd yn ôl 695 00:30:29,010 --> 00:30:30,010 hynny, eich bod yn gwybod beth. 696 00:30:30,010 --> 00:30:34,850 Pam nad ydym yn sicrhau na chaiff unrhyw ddefnyddiwr data byth, byth, byth 697 00:30:34,850 --> 00:30:36,730 storio ar sero bye? 698 00:30:36,730 --> 00:30:39,610 Yn wir, hyd yn oed yn fy enghraifft mympwyol o'r blaen, doeddwn i ddim yn dechrau rifo'r 699 00:30:39,610 --> 00:30:40,390 bytes ar sero. 700 00:30:40,390 --> 00:30:41,540 Dechreuais ar un. 701 00:30:41,540 --> 00:30:44,950 Gan fy mod yn gwybod bod pobl yn y byd wedi penderfynu cadw'r sero 702 00:30:44,950 --> 00:30:47,970 beit mewn RAM unrhyw un yn rhywbeth arbennig. 703 00:30:47,970 --> 00:30:52,020 >> Y rheswm am hyn, ar unrhyw adeg rydych am ei arwydd bod rhywbeth wedi mynd o'i le 704 00:30:52,020 --> 00:30:55,960 mewn perthynas â chyfeiriadau, dychwelodd i chi null - a elwir fel arall yn sero - 705 00:30:55,960 --> 00:30:59,410 ac oherwydd eich bod yn gwybod nad oes unrhyw legit data yn y cyfeiriad sero, yn amlwg 706 00:30:59,410 --> 00:31:00,400 mae hynny'n golygu gwall. 707 00:31:00,400 --> 00:31:04,080 A dyna pam yr ydym, yn ôl confensiwn, edrychwch ar gyfer null a dychwelyd rhywbeth 708 00:31:04,080 --> 00:31:06,260 fel un yn yr achosion hynny. 709 00:31:06,260 --> 00:31:09,300 >> Felly, os ydym yn sgroliwch i lawr nawr, mae hyn yn unig yna mae rhai gwirio gwall, rhag ofn 710 00:31:09,300 --> 00:31:10,610 aeth rhywbeth o'i le gyda [? mechnïaeth?] 711 00:31:10,610 --> 00:31:13,470 yn gyfan gwbl a gadael y rhaglen trwy ddychwelyd yn gynnar. 712 00:31:13,470 --> 00:31:19,030 Mae'r llinell hon gellid nawr yn cael ei ailysgrifennu â hyn, sy'n golygu beth? 713 00:31:19,030 --> 00:31:23,155 Ar yr ochr chwith, yn rhoi i mi un arall pwyntydd i gymeriad, a galw yn t. 714 00:31:23,155 --> 00:31:26,935 Beth ydw i'n ei storio tu mewn t, yn seiliedig ar un llinell hon o god? 715 00:31:26,935 --> 00:31:30,950 716 00:31:30,950 --> 00:31:32,170 >> Rwy'n storio lleoliad. 717 00:31:32,170 --> 00:31:34,742 Yn benodol y lleoliad oedd yn s. 718 00:31:34,742 --> 00:31:39,000 Felly, os bydd y defnyddiwr wedi teipio helo, ac yn gyntaf helo digwydd i roi diwedd ar i fyny 719 00:31:39,000 --> 00:31:42,567 yma, yna mae'r rhif 123 yn yn mynd i ddod yn ôl o gael 720 00:31:42,567 --> 00:31:43,810 llinyn ac yn cael ei storio - 721 00:31:43,810 --> 00:31:44,780 fel y dywedasom yn gynharach - 722 00:31:44,780 --> 00:31:45,440 yn s. 723 00:31:45,440 --> 00:31:50,560 >> Pan wyf yn awr yn datgan pwyntydd arall i a t golosg a galw yn, pa rif sydd 724 00:31:50,560 --> 00:31:53,940 llythrennol yn mynd i roi diwedd ar i fyny yn t yn ôl y stori? 725 00:31:53,940 --> 00:31:55,420 Felly 123. 726 00:31:55,420 --> 00:32:00,310 >> Felly dechnegol nawr yn s a t yn pwyntio at yr union 727 00:32:00,310 --> 00:32:02,410 yr un darnau o gof. 728 00:32:02,410 --> 00:32:06,140 Felly sylwi ar yr hyn yr wyf i'n mynd i wneud yn awr i profi bod y rhaglen yn bygi. 729 00:32:06,140 --> 00:32:08,820 >> Yn gyntaf yr wyf i'n mynd i wneud cais, gyda print f, gan fanteisio 730 00:32:08,820 --> 00:32:10,080 copi o'r llinyn. 731 00:32:10,080 --> 00:32:11,660 Yna mi i'n mynd i wneud ychydig Gwall wrth wirio. 732 00:32:11,660 --> 00:32:12,160 Rydw i'n mynd i wneud yn siŵr. 733 00:32:12,160 --> 00:32:16,710 Gadewch i ni wneud yn siŵr bod y llinyn t ar lleiaf yn fwy na sero o hyd, 734 00:32:16,710 --> 00:32:19,190 felly mae rhywfaint o gymeriad yno i fanteisio mewn gwirionedd. 735 00:32:19,190 --> 00:32:22,840 >> Ac yna efallai y byddwch yn cofio hyn o enghreifftiau blaenorol. 736 00:32:22,840 --> 00:32:25,630 2 uchaf - sydd yn y ffeil ctype.h. 737 00:32:25,630 --> 00:32:30,800 T braced sero rhoi sero i mi gymeriad y llinyn t. 738 00:32:30,800 --> 00:32:34,360 A 2 uchaf o'r un gwerth, gwrs, yn trosi i priflythyren. 739 00:32:34,360 --> 00:32:38,230 >> Felly reddfol, mae hyn yn tynnu sylw at linell o cod yn cael manteisio gyntaf 740 00:32:38,230 --> 00:32:40,250 llythyr yn t. 741 00:32:40,250 --> 00:32:44,485 Ond nid yw'n manteisio, yn reddfol, y llythyr cyntaf yn s. 742 00:32:44,485 --> 00:32:48,130 Ond os ydych yn meddwl ymlaen, beth ydw i ar fin gweld pan fyddaf yn rhedeg y rhaglen hon 743 00:32:48,130 --> 00:32:54,220 ac argraffwch y gwreiddiol, s, a'r copi fel y'i gelwir, t? 744 00:32:54,220 --> 00:32:55,350 >> Maent yn wir yn mynd i fod yr un fath. 745 00:32:55,350 --> 00:32:56,600 A pham maen nhw'n mynd i fod yr un fath? 746 00:32:56,600 --> 00:32:58,970 747 00:32:58,970 --> 00:33:01,020 Maent yn ddau pwyntio i yn union yr un peth. 748 00:33:01,020 --> 00:33:01,610 Felly, gadewch i ni wneud hyn. 749 00:33:01,610 --> 00:33:03,160 >> Gwnewch gopi sero. 750 00:33:03,160 --> 00:33:04,070 Mae'n llunio OK. 751 00:33:04,070 --> 00:33:06,500 Gadewch i mi redeg copi sero. 752 00:33:06,500 --> 00:33:10,110 Gadewch i mi deipio rhywbeth fel helo yn Yna daro pob llythrennau bach Enter. 753 00:33:10,110 --> 00:33:16,520 Ac mae'n honni bod y s wreiddiol a'r copi yn wir yn union yr un fath. 754 00:33:16,520 --> 00:33:17,920 >> Felly, beth sydd wir yn digwydd yma? 755 00:33:17,920 --> 00:33:20,100 Gadewch i mi ail-lunio darlun hwn yn unig i ddweud y stori mewn 756 00:33:20,100 --> 00:33:21,340 ychydig yn wahanol ffordd. 757 00:33:21,340 --> 00:33:26,060 Beth sy'n wir yn mynd ymlaen o dan y cwfl pan wyf yn datgan rhywbeth fel 758 00:33:26,060 --> 00:33:30,410 torgoch dechrau s, neu linyn s, Yr wyf yn cael pwyntydd - 759 00:33:30,410 --> 00:33:33,090 sy'n digwydd i fod yn bedwar bytes yn y CS50 offer 760 00:33:33,090 --> 00:33:34,410 ac mewn llawer o gyfrifiaduron. 761 00:33:34,410 --> 00:33:36,008 Ac yr wyf i'n mynd i alw y s. 762 00:33:36,008 --> 00:33:39,810 Ac mae hyn ar hyn o bryd rhywfaint o werth anhysbys. 763 00:33:39,810 --> 00:33:43,900 >> Pan fyddwch yn datgan newidyn, oni bai eich bod eich hun yn rhoi gwerth fan honno, a 764 00:33:43,900 --> 00:33:44,570 yn gwybod beth sydd yno. 765 00:33:44,570 --> 00:33:48,110 Gallai fod peth dilyniant ar hap o darnau o'r gweithredu blaenorol. 766 00:33:48,110 --> 00:33:52,490 Felly, pan fyddaf, yn fy llinell o cod yn cael llinyn, ac yna'i storio dychwelyd 767 00:33:52,490 --> 00:33:54,800 gwerth mewn s cael llinyn rhywsut - 768 00:33:54,800 --> 00:33:58,520 ac rydym yn y pen draw chi helpu croen yn ôl sut yn cael gwaith llinyn, rywsut yn dyrannu 769 00:33:58,520 --> 00:34:00,480 amrywiaeth yn ôl pob tebyg yn edrych yn ychydig fel hyn. 770 00:34:00,480 --> 00:34:05,390 H-E-L-L-O, slaes sero. 771 00:34:05,390 --> 00:34:09,510 >> Gadewch i ni dybio bod hyn yn gyfeiriad 123 dim ond cysondeb gyntaf. 772 00:34:09,510 --> 00:34:13,000 Felly, yn cael dychwelyd llinyn, yn y Amlygodd lein yn y fan, mae'n dychwelyd y 773 00:34:13,000 --> 00:34:15,000 Dywedodd nifer ydym, 123. 774 00:34:15,000 --> 00:34:17,420 Felly, beth sydd wir yn mynd y tu mewn o s yma? 775 00:34:17,420 --> 00:34:26,590 >> Wel, beth sydd wir yn mynd tu mewn yw 123. 776 00:34:26,590 --> 00:34:29,250 Ond dweud y gwir, rwy'n cael ychydig yn drysu gan yr holl gyfeiriadau hyn, 777 00:34:29,250 --> 00:34:30,320 holl rifau mympwyol hyn. 778 00:34:30,320 --> 00:34:32,290 123, 124, 127. 779 00:34:32,290 --> 00:34:34,570 Felly, gadewch i ni symleiddio mewn gwirionedd y byd yn ychydig bach. 780 00:34:34,570 --> 00:34:38,800 >> Pan fyddwn yn sôn am awgrymiadau, a dweud y gwir, i ni bodau dynol, y mae'r heck gofalu lle 781 00:34:38,800 --> 00:34:39,870 pethau mewn cof? 782 00:34:39,870 --> 00:34:41,080 Mae hynny'n hollol fympwyol. 783 00:34:41,080 --> 00:34:43,370 Mae'n mynd i ddibynnu ar sut y llawer o RAM gan y defnyddiwr. 784 00:34:43,370 --> 00:34:46,590 Mae'n mynd i ddibynnu ar pryd yn ystod y dydd ydych yn rhedeg y rhaglen, efallai, a 785 00:34:46,590 --> 00:34:48,250 pa fewnbwn y defnyddiwr yn rhoi i chi. 786 00:34:48,250 --> 00:34:50,060 Rydym yn annedd ar fanylion dibwys. 787 00:34:50,060 --> 00:34:54,230 >> Felly, gadewch i ni haniaethol i ffwrdd a dweud, pan fyddwch yn rhedeg llinell o cod fel hyn, 788 00:34:54,230 --> 00:34:57,320 torgoch seren s yn cael y ffurflen gwerth o linyn get. 789 00:34:57,320 --> 00:35:02,720 Peidiwch â pam yr ydym yn hytrach na dim ond tynnu hyn yr ydym yn cadw galw pwyntydd fel pe ei fod yn 790 00:35:02,720 --> 00:35:04,140 pwyntio at rywbeth? 791 00:35:04,140 --> 00:35:07,000 Felly yr wyf yn honni yn awr ei fod ef i fyny mae pwyntydd - 792 00:35:07,000 --> 00:35:08,480 o dan y cwfl ei fod yn gyfeiriad. 793 00:35:08,480 --> 00:35:11,330 Ond 'i' jyst bwyntio at y beit cyntaf yn y 794 00:35:11,330 --> 00:35:12,780 llinyn sydd wedi bod yn dychwelyd. 795 00:35:12,780 --> 00:35:16,710 >> Os wyf yn awr yn dychwelyd at y cod yma, beth sy'n mynd ymlaen yn y llinell hon? 796 00:35:16,710 --> 00:35:20,020 Wel, yn y llinell hon a amlygwyd yn awr, Rwy'n datgan yn ôl pob golwg arall 797 00:35:20,020 --> 00:35:21,070 amrywiol o'r enw t. 798 00:35:21,070 --> 00:35:25,700 Ond mae hefyd yn pwyntydd, felly dwi'n mynd i dynnu fel, mewn theori, yr union 799 00:35:25,700 --> 00:35:26,710 blwch un maint. 800 00:35:26,710 --> 00:35:28,160 Ac yr wyf i'n mynd i alw yn t. 801 00:35:28,160 --> 00:35:33,500 >> Ac yn awr os ydym yn mynd yn ôl at y cod unwaith eto, pan fyddaf yn storio y tu mewn t, 802 00:35:33,500 --> 00:35:36,920 beth ydw i yn dechnegol rhoi tu mewn t? 803 00:35:36,920 --> 00:35:39,350 Wel dechnegol, mae hyn yn oedd y nifer 123. 804 00:35:39,350 --> 00:35:42,270 Felly mewn gwirionedd dylwn i fod yn ysgrifennu rhif 123 yno. 805 00:35:42,270 --> 00:35:43,900 Ond gadewch i ni fynd ag ef ar lefel uwch. 806 00:35:43,900 --> 00:35:48,090 t, os mai dim ond pwyntydd, reddfol, yn unig yw hynny. 807 00:35:48,090 --> 00:35:49,800 Dyna i gyd sydd wedi cael ei storio mewn 'na. 808 00:35:49,800 --> 00:35:54,970 >> Felly, yn awr yn y llinellau diddorol ddiwethaf o god, pan mewn gwirionedd yn mynd ati i 809 00:35:54,970 --> 00:36:00,680 manteisio cymeriad sero mewn t, yr hyn sy'n mynd ymlaen? 810 00:36:00,680 --> 00:36:06,310 Wel, t braced sero yn awr yn pwyntio i ba gymeriad, yn ôl pob tebyg? 811 00:36:06,310 --> 00:36:07,460 >> Mae'n pwyntio at h. 812 00:36:07,460 --> 00:36:08,870 Oherwydd bod t braced sero - 813 00:36:08,870 --> 00:36:12,490 galw i gof, mae hyn yn hen gystrawen. t braced sero yn unig yn golygu os t yn llinyn, t 814 00:36:12,490 --> 00:36:15,590 braced sero yn golygu cael y sero gymeriad yn y nerth. 815 00:36:15,590 --> 00:36:18,650 Felly, beth mae hynny'n ei olygu mewn gwirionedd yw mynd i'r amrywiaeth hwn - 816 00:36:18,650 --> 00:36:21,520 ac ie, gallai hyn fod yn 123, gallai hyn fod yn 124. 817 00:36:21,520 --> 00:36:22,790 Ond mae'n gyd berthynas, cofiwch. 818 00:36:22,790 --> 00:36:25,640 Pryd bynnag y siarad am amrywiaeth, rydym wedi y fantais o siarad am 819 00:36:25,640 --> 00:36:27,000 mynegeion cymharol. 820 00:36:27,000 --> 00:36:31,120 >> Ac felly yn awr y gallwn gymryd yn ganiataol bod t braced sero h. 821 00:36:31,120 --> 00:36:35,090 Felly os wyf yn galw 2 uchaf arno, beth mae hynny'n mewn gwirionedd yn ei wneud yn manteisio 822 00:36:35,090 --> 00:36:38,290 yr h llythrennau bach i priflythyren H. Ond wrth gwrs, beth yw s? 823 00:36:38,290 --> 00:36:41,010 Mae'n pwyntio at yr un llinyn darn. 824 00:36:41,010 --> 00:36:44,200 >> Felly, mae hyn yw'r cyfan sydd wedi bod yn digwydd yn y cod hwn hyd yn hyn. 825 00:36:44,200 --> 00:36:45,960 Felly, beth sydd yna bydd y goblygiadau? 826 00:36:45,960 --> 00:36:48,300 Sut rydym yn datrys y ddwy broblem? 827 00:36:48,300 --> 00:36:50,870 Sut rydym yn cymharu â llinynnau gwirioneddol? 828 00:36:50,870 --> 00:36:53,720 >> Wel reddfol, sut y byddai byddwch yn mynd am gymharu dau 829 00:36:53,720 --> 00:36:55,090 llinynnau ar gyfer gwir gydraddoldeb? 830 00:36:55,090 --> 00:36:58,920 831 00:36:58,920 --> 00:37:00,750 >> Beth mae'n ei olygu os oes dau llinynnau yn gyfartal? 832 00:37:00,750 --> 00:37:04,330 Yn amlwg, nid bod eu cyfeiriadau yn gyfartal yn y cof, oherwydd dyna isel 833 00:37:04,330 --> 00:37:06,590 manylion gweithredu lefel. 834 00:37:06,590 --> 00:37:08,360 Mae pob un o'r cymeriadau yr un fath. 835 00:37:08,360 --> 00:37:12,810 Felly, gadewch i mi gynnig, a gadewch i mi gyflwyno mewn fersiwn un o compare.c 836 00:37:12,810 --> 00:37:14,970 yma, felly cymharu-1.c. 837 00:37:14,970 --> 00:37:19,590 >> Gadewch i mi cynnig ein bod yn dal i gael pwyntydd enw s, a storio ynddo y 838 00:37:19,590 --> 00:37:20,610 dychwelyd gwerth llinyn get. 839 00:37:20,610 --> 00:37:21,750 Gadewch i ni wneud yr un peth gyda t. 840 00:37:21,750 --> 00:37:23,230 Felly, nid oes yr un y cod yn wahanol. 841 00:37:23,230 --> 00:37:25,420 Rydw i'n mynd i ychwanegu ychydig mwy o wall gwirio awr. 842 00:37:25,420 --> 00:37:29,390 Felly nawr ein bod yn fath o plicio yn ôl haenau hyn yn CS50 o'r hyn y llinyn 843 00:37:29,390 --> 00:37:33,520 mewn gwirionedd, mae angen i ni fod yn fwy rhefrol gwneud yn siŵr nad ydym yn cam-drin 844 00:37:33,520 --> 00:37:35,330 gwerthoedd annilys fel null. 845 00:37:35,330 --> 00:37:36,440 >> Felly, Im 'jyst yn mynd i wirio. 846 00:37:36,440 --> 00:37:41,490 Os nad yw'n s null cyfartal ac nid yw'n t null cyfartal, sy'n golygu ein bod yn iawn. 847 00:37:41,490 --> 00:37:44,460 Get Nid yw'r llinyn yn sgriw i fyny yn cael un o'r llinynnau hynny. 848 00:37:44,460 --> 00:37:51,270 A allwch chi ddyfalu efallai nawr, beth yn STR CMP yn ôl pob tebyg yn ei wneud? 849 00:37:51,270 --> 00:37:52,000 Llinyn cymharu. 850 00:37:52,000 --> 00:37:55,470 >> Felly, os oes gennych raglen yn java o'r blaen, mae hyn yn debyg i'r dull yn hafal yn y 851 00:37:55,470 --> 00:37:56,490 dosbarth llinyn. 852 00:37:56,490 --> 00:37:57,890 Ond ar gyfer y rhai ohonoch nad ydynt wedi raglennu o'r blaen, 853 00:37:57,890 --> 00:37:59,320 hyn swyddogaeth c yn unig. 854 00:37:59,320 --> 00:38:02,180 Mae'n digwydd i ddod i mewn a ffeil o'r enw string.h. 855 00:38:02,180 --> 00:38:03,830 Dyna lle mae'n datgan. 856 00:38:03,830 --> 00:38:05,110 >> A llinyn cymharu - 857 00:38:05,110 --> 00:38:07,530 Fi 'n weithredol yn anghofio ei defnydd, ond byth yn meddwl hynny. 858 00:38:07,530 --> 00:38:10,470 Dwyn i gof bod yn gallu gwneud dyn, tro cymharu. 859 00:38:10,470 --> 00:38:12,590 Ac mae hyn yn mynd i ddod i fyny 'r Llawlyfr rhaglenwyr Linux. 860 00:38:12,590 --> 00:38:14,060 Ac mae'n, dweud y gwir, ychydig yn cryptig. 861 00:38:14,060 --> 00:38:15,270 Ond gallaf weld yma fod, yep. 862 00:38:15,270 --> 00:38:17,570 Rhaid i mi gynnwys string.h. 863 00:38:17,570 --> 00:38:20,590 >> Ac mae'n dweud yma o dan y disgrifiad, "y swyddogaeth cymharu llinyn yn cymharu 864 00:38:20,590 --> 00:38:24,560 y ddau llinynnau S1 a S2. "Ac S1 ac S2, mae'n debyg, y ddau 865 00:38:24,560 --> 00:38:26,120 dadleuon pasio i mewn 866 00:38:26,120 --> 00:38:28,650 Dwi ddim yn cofio beth Etholaeth yw, ond erbyn hyn yn sylwi - 867 00:38:28,650 --> 00:38:31,480 ac efallai eich bod wedi gweld hyn eisoes pan eich bod wedi defnyddio'r tudalennau dyn os ydych yn 868 00:38:31,480 --> 00:38:32,390 rhaid i hyn i gyd - 869 00:38:32,390 --> 00:38:36,220 y seren torgoch yn unig gyfystyr gyda llinyn. 870 00:38:36,220 --> 00:38:40,440 >> Felly mae'n cymharu y ddau llinynnau, S1 ac S2, ac yn dychwelyd yn gyfanrif llai 871 00:38:40,440 --> 00:38:44,930 na neu'n hafal i neu'n fwy na sero os S1 yn dod o hyd, yn y drefn honno, i fod yn 872 00:38:44,930 --> 00:38:47,450 llai na, neu yn cyd-fynd, neu fod yn fwy na S2. 873 00:38:47,450 --> 00:38:51,220 Dyna dim ond yn ffordd gymhleth iawn o ddweud y llinyn cymharu enillion 874 00:38:51,220 --> 00:38:55,760 sero os oes dau llinynnau yn reddfol union yr un fath, cymeriad gyfer 875 00:38:55,760 --> 00:38:57,120 cymeriad cymeriad. 876 00:38:57,120 --> 00:38:59,970 >> Mae'n dychwelyd rhif negyddol os s, yn nhrefn yr wyddor, i fod 877 00:38:59,970 --> 00:39:01,010 i ddod o flaen t. 878 00:39:01,010 --> 00:39:05,300 Neu yn dychwelyd rhif positif os s i fod i ddod ar ôl t 879 00:39:05,300 --> 00:39:06,170 yn nhrefn yr wyddor. 880 00:39:06,170 --> 00:39:08,360 Felly, gyda hyn swyddogaeth syml, gallai chi, er enghraifft, didoli 881 00:39:08,360 --> 00:39:09,770 criw cyfan o eiriau? 882 00:39:09,770 --> 00:39:13,984 >> Felly, yn y fersiwn newydd, dw i'n mynd i fynd yn ei flaen a gwneud compare1. 883 00:39:13,984 --> 00:39:15,750 Dot slaes cymharu un. 884 00:39:15,750 --> 00:39:18,030 'N annhymerus' deipio i mewn helo ym mhob achos is. 885 00:39:18,030 --> 00:39:20,300 Rydw i'n mynd i deipio helo ym mhob llythrennau bach eto. 886 00:39:20,300 --> 00:39:23,340 Ac yn diolch i'r drefn awr mae'n sylweddoli Yr wyf deipio yr un peth. 887 00:39:23,340 --> 00:39:27,520 >> Yn y cyfamser, os wyf deipio i mewn helo yn is achos ac HELO mewn priflythrennau a 888 00:39:27,520 --> 00:39:29,710 cymharu, yr wyf deipio gwahanol bethau. 889 00:39:29,710 --> 00:39:32,530 Oherwydd nid yn unig yn y cyfeiriadau wahanol, ond rydym yn cymharu 890 00:39:32,530 --> 00:39:35,350 cymeriadau gwahanol eto ac eto. 891 00:39:35,350 --> 00:39:37,320 >> Wel, gadewch i ni fynd a gosod un broblem arall nawr. 892 00:39:37,320 --> 00:39:41,590 Gadewch i mi agor fersiwn un o'r copi, sydd bellach yn mynd i'r afael 893 00:39:41,590 --> 00:39:42,900 y mater hwn fel a ganlyn. 894 00:39:42,900 --> 00:39:45,650 Ac mae hyn yn un yn mynd i edrych ychydig yn fwy cymhleth. 895 00:39:45,650 --> 00:39:49,320 Ond os ydych yn meddwl am yr hyn rydym yn broblem angen i ddatrys, gobeithio bydd hyn yn 896 00:39:49,320 --> 00:39:51,870 glir mewn dim ond munud awr. 897 00:39:51,870 --> 00:39:57,280 >> Felly mae hyn yn llinell gyntaf, cols dechrau t, yn Gallai termau lleyg rhywun yn cynnig 898 00:39:57,280 --> 00:39:59,450 beth mae hyn yn llinell yma'n golygu? 899 00:39:59,450 --> 00:40:01,050 Golosg seren t, beth yw hynny wneud? 900 00:40:01,050 --> 00:40:06,660 901 00:40:06,660 --> 00:40:07,210 >> Da. 902 00:40:07,210 --> 00:40:09,500 Creu pwyntydd i rai fan a'r lle yn y cof. 903 00:40:09,500 --> 00:40:10,930 A gadewch i mi fireinio ychydig. 904 00:40:10,930 --> 00:40:17,180 Datgan amrywiol a fydd yn storio'r gyfeiriad rhai torgoch yn y cof, dim ond 905 00:40:17,180 --> 00:40:18,480 i fod ychydig yn fwy priodol. 906 00:40:18,480 --> 00:40:21,210 >> Iawn, felly, yn awr ar yr ochr dde, rydw i wedi erioed wedi gweld un o'r swyddogaethau hyn 907 00:40:21,210 --> 00:40:22,660 o'r blaen, malloc. 908 00:40:22,660 --> 00:40:26,980 Ond beth y gallai hynny ei olygu? 909 00:40:26,980 --> 00:40:28,050 Dyrannu cof. 910 00:40:28,050 --> 00:40:29,410 Dyrannu cof. 911 00:40:29,410 --> 00:40:33,050 >> Felly, mae'n troi allan, hyd yn hyn, rydym yn nid ydynt mewn gwirionedd wedi ffordd bwerus o 912 00:40:33,050 --> 00:40:36,210 gofyn i'r system weithredu, rhoi rhywfaint o cof i mi. 913 00:40:36,210 --> 00:40:39,980 Yn hytrach, mae gennym yn awr swyddogaeth o'r enw malloc sy'n gwneud yn union hynny. 914 00:40:39,980 --> 00:40:42,960 Er bod hyn yn dipyn o tynnu sylw ar hyn o bryd, yn sylwi bod yn 915 00:40:42,960 --> 00:40:46,200 rhwng y ddau cromfachau yn jyst yn mynd i fod yn rhif. 916 00:40:46,200 --> 00:40:48,510 Ble rydw i wedi teipio dan sylw Gall marciau fod yn rhif. 917 00:40:48,510 --> 00:40:51,020 >> Ac mae'r nifer yn golygu, yn rhoi 10 bytes mi. 918 00:40:51,020 --> 00:40:52,320 Rhowch 20 bytes mi. 919 00:40:52,320 --> 00:40:53,820 Rhowch 100 bytes mi. 920 00:40:53,820 --> 00:40:56,500 A bydd malloc gwneud ei orau i gofyn i'r system weithredu - 921 00:40:56,500 --> 00:40:57,630 Linux, yn yr achos hwn - 922 00:40:57,630 --> 00:40:59,630 hey, yw eu 100 bytes o RAM sydd ar gael? 923 00:40:59,630 --> 00:41:04,320 Os felly, yn dychwelyd bytes hynny i mi gan dychwelyd y cyfeiriad pa un o'r 924 00:41:04,320 --> 00:41:06,610 bytes hynny, efallai? 925 00:41:06,610 --> 00:41:07,610 Y cyntaf un. 926 00:41:07,610 --> 00:41:10,460 >> Felly, yma hefyd - ac mae hyn yn bennaf yn C, unrhyw tro y byddwch chi'n 927 00:41:10,460 --> 00:41:11,680 delio gyda chyfeiriadau? 928 00:41:11,680 --> 00:41:15,830 Rydych yn bron bob amser yn delio â'r gyfeiriad cyntaf o'r fath, ni waeth pa mor fawr 929 00:41:15,830 --> 00:41:19,490 darn o gof ydych yn cael eich drosglwyddo'n ôl, fel petai. 930 00:41:19,490 --> 00:41:20,880 >> Felly, gadewch i blymio i mewn yma. 931 00:41:20,880 --> 00:41:23,940 Yr wyf yn ceisio dyrannu sut nifer o bytes, yn union? 932 00:41:23,940 --> 00:41:24,080 Well. 933 00:41:24,080 --> 00:41:26,090 Hyd cyfres o s - gadewch i gwneud yn enghraifft concrid. 934 00:41:26,090 --> 00:41:30,700 Os yw helo, H-E-L-L-O, beth yw'r hyd cyfres o s, yn amlwg? 935 00:41:30,700 --> 00:41:32,010 Felly mae'n pump. 936 00:41:32,010 --> 00:41:34,590 Ond dw i'n gwneud ac 1 ar hynny, pam? 937 00:41:34,590 --> 00:41:37,700 Pam ydw i eisiau chwe bytes yn lle pump? 938 00:41:37,700 --> 00:41:38,790 Mae cymeriad null. 939 00:41:38,790 --> 00:41:41,210 >> Dydw i ddim eisiau gadael oddi ar yr cymeriad null arbennig. 940 00:41:41,210 --> 00:41:45,160 Oherwydd os wyf yn gwneud copi o Helo a dim ond gwneud H-E-L-L-O, ond nid wyf yn rhoi 941 00:41:45,160 --> 00:41:50,160 bod cymeriad arbennig, y cyfrifiadur Efallai na fydd yn cael, trwy hap a damwain, mae slaes 942 00:41:50,160 --> 00:41:51,730 sero yno i mi. 943 00:41:51,730 --> 00:41:55,570 Ac felly os Im 'yn ceisio at chyfrif i maes y hyd y copi, efallai y byddwn yn meddwl bod 944 00:41:55,570 --> 00:41:59,360 ei fod yn 20 llythyren o hyd, neu filiwn cymeriadau hir os Fi jyst byth yn digwydd 945 00:41:59,360 --> 00:42:01,050 i daro sero slaes. 946 00:42:01,050 --> 00:42:05,780 >> Felly mae angen chwe bytes i storio H-E-L-L-O, slaes sero. 947 00:42:05,780 --> 00:42:07,870 Ac yna mae hyn yn unig i fod yn rhefrol super. 948 00:42:07,870 --> 00:42:10,700 Gadewch i ni dybio fy mod yn anghofio'r hyn maint y torgoch yn. 949 00:42:10,700 --> 00:42:12,020 Rydym yn dal i ddweud ei fod yn un beit. 950 00:42:12,020 --> 00:42:12,860 Ac mae'n fel arfer. 951 00:42:12,860 --> 00:42:15,425 Yn ddamcaniaethol, gallai fod yn rhywbeth wahanol, ar Mac wahanol neu 952 00:42:15,425 --> 00:42:16,250 gwahanol PC. 953 00:42:16,250 --> 00:42:19,650 >> Felly, mae'n troi allan yna weithredwr hwn Gelwir sizeof, os ydych yn ei throsglwyddo i'r 954 00:42:19,650 --> 00:42:22,680 enw math ddata - fel torgoch, neu int, neu fflôt - 955 00:42:22,680 --> 00:42:26,930 bydd yn dweud wrthych, ddeinamig, faint o bytes golosg yn mynd i fyny ar y 956 00:42:26,930 --> 00:42:28,090 cyfrifiadur penodol. 957 00:42:28,090 --> 00:42:31,360 >> Felly mae hyn yn effeithiol dim ond fel amserau 1 neu ddweud 958 00:42:31,360 --> 00:42:32,440 amseroedd dim byd o gwbl. 959 00:42:32,440 --> 00:42:36,340 Ond dw i'n gwneud hynny dim ond i fod rhefrol super, mai dim ond mewn achos golosg yn wahanol 960 00:42:36,340 --> 00:42:40,610 ar eich cyfrifiadur yn erbyn fy un i, y ffordd hon y math bob amser yn mynd i atalfa i maes. 961 00:42:40,610 --> 00:42:43,720 >> Yn olaf, i lawr fan hyn i wirio ar gyfer null, sydd bob amser yn arfer da - unwaith eto, 962 00:42:43,720 --> 00:42:44,920 unrhyw bryd rydym yn delio â awgrymiadau. 963 00:42:44,920 --> 00:42:47,520 Os nad malloc yn gallu rhoi mi chwe byes - sy'n 964 00:42:47,520 --> 00:42:49,210 annhebygol, ond dim ond yn achos - 965 00:42:49,210 --> 00:42:50,730 dychwelyd un ar unwaith. 966 00:42:50,730 --> 00:42:53,290 Ac yn awr, mynd yn ei flaen a chopïo y llinyn fel a ganlyn. 967 00:42:53,290 --> 00:42:57,240 Ac mae hyn yn cystrawen gyfarwydd, er bod hynny mewn rôl wahanol. 968 00:42:57,240 --> 00:43:01,210 >> Rydw i'n mynd i fynd yn ei flaen a chael y llinyn hyd s a'i storio yn n. 969 00:43:01,210 --> 00:43:06,620 Yna yr wyf i'n mynd i ailadrodd oddi hafal i sero hyd at ac yn cynnwys n, 970 00:43:06,620 --> 00:43:08,410 yn fwy na neu'n hafal i. 971 00:43:08,410 --> 00:43:13,540 Fel bod ar bob fersiwn, yr wyf yn rhoi y cymeriad ith o s yn y ith 972 00:43:13,540 --> 00:43:15,380 cymeriad t. 973 00:43:15,380 --> 00:43:18,190 >> Felly, beth sy'n digwydd mewn gwirionedd o dan y cwfl yma? 974 00:43:18,190 --> 00:43:22,140 Wel os yw hyn, er enghraifft, yn s - 975 00:43:22,140 --> 00:43:26,400 ac yr wyf wedi teipio yn y gair H-E-L-L-O ac mae 'na sero slaes. 976 00:43:26,400 --> 00:43:29,020 Ac eto, mae hyn yn s pwyntio yma. 977 00:43:29,020 --> 00:43:30,830 A dyma yn awr yw t. 978 00:43:30,830 --> 00:43:34,860 >> Ac mae hyn yn pwyntio awr i copi o gof, dde? 979 00:43:34,860 --> 00:43:37,340 Malloc wedi rhoi i mi yn ei gyfanrwydd darn o gof. 980 00:43:37,340 --> 00:43:41,440 Nid wyf yn gwybod beth sydd i ddechrau yn unrhyw un o'r lleoliadau hyn. 981 00:43:41,440 --> 00:43:44,340 Felly, yr wyf i'n mynd i feddwl am y rhain fel criw cyfan o farciau cwestiwn. 982 00:43:44,340 --> 00:43:50,190 >> Ond cyn gynted ag yr wyf yn dechrau dolennu o sero ar i fyny drwy'r hyd s, t 983 00:43:50,190 --> 00:43:52,790 braced sero ac t braced 1 - 984 00:43:52,790 --> 00:43:55,080 a byddaf yn rhoi'r hyn yn awr ar y uwchben - 985 00:43:55,080 --> 00:44:04,190 t braced sero ac s braced sero yn golygu fy mod i'n mynd i gael ei gopïo 986 00:44:04,190 --> 00:44:09,875 iteraidd h yma, E-L-L-O. Byd Gwaith, gan fy mod yn gwneud y plws 987 00:44:09,875 --> 00:44:12,370 1, slaes sero. 988 00:44:12,370 --> 00:44:19,060 >> Felly, yn awr yn achos gymharu-1.c, yn y pen draw, os wyf yn argraffu'r 989 00:44:19,060 --> 00:44:24,760 cyfalafu t, dylem gweld ei fod ef wedi newid. 990 00:44:24,760 --> 00:44:26,090 Gadewch i mi fynd yn ei flaen yn awr ac yn gwneud hyn. 991 00:44:26,090 --> 00:44:28,630 Felly gwnewch yn copy1. 992 00:44:28,630 --> 00:44:30,860 Dot slaes copy1. 993 00:44:30,860 --> 00:44:33,670 Rydw i'n mynd i deipio helo, Enter. 994 00:44:33,670 --> 00:44:37,430 Ac yn awr sylwi, dim ond y copi wedi cael eu cyfalafu. 995 00:44:37,430 --> 00:44:40,890 Gan fy mod yn wirioneddol ddau darnau o gof. 996 00:44:40,890 --> 00:44:44,390 >> Yn anffodus, gallwch wneud rhywfaint o 'n bert pethau drwg a 'n bert beryglus yma. 997 00:44:44,390 --> 00:44:49,290 Gadewch i mi dynnu i fyny enghraifft yma nawr, sy'n rhoi enghraifft o rai ni 998 00:44:49,290 --> 00:44:51,540 linellau gwahanol. 999 00:44:51,540 --> 00:44:56,040 Felly, dim ond yn reddfol yma, y ​​llinell gyntaf o god, int seren x, yn datgan 1000 00:44:56,040 --> 00:44:57,340 newidyn o'r enw x. 1001 00:44:57,340 --> 00:44:58,810 A beth yw'r math o ddata o'r newidyn? 1002 00:44:58,810 --> 00:45:01,820 1003 00:45:01,820 --> 00:45:04,290 Beth sydd y math data o newidyn hwnnw? 1004 00:45:04,290 --> 00:45:06,980 Nid dyna oedd y Cliffhanger. 1005 00:45:06,980 --> 00:45:08,350 >> Y math data yn seren int. 1006 00:45:08,350 --> 00:45:12,600 Felly, beth mae hynny'n ei olygu? x Bydd storio cyfeiriad o int. 1007 00:45:12,600 --> 00:45:13,520 Syml â hynny. 1008 00:45:13,520 --> 00:45:16,220 Y yn mynd i storio'r gyfeiriad o int. 1009 00:45:16,220 --> 00:45:18,390 Beth yw'r drydedd linell o god wneud yno? 1010 00:45:18,390 --> 00:45:21,850 Mae'n dyrannu faint o bytes, yn fwyaf tebygol? 1011 00:45:21,850 --> 00:45:22,350 Pedwar. 1012 00:45:22,350 --> 00:45:25,460 Oherwydd maint o int yn pedwar yn gyffredinol, malloc o bedwar yn rhoi 1013 00:45:25,460 --> 00:45:29,950 mi gefnogi'r cyfeiriad y darn o cof, y cyntaf o'i bytes yn 1014 00:45:29,950 --> 00:45:32,110 storio bellach yn x. 1015 00:45:32,110 --> 00:45:34,410 >> Nawr rydym yn symud ychydig yn gyflym. 1016 00:45:34,410 --> 00:45:35,760 Star x yn golygu beth? 1017 00:45:35,760 --> 00:45:38,480 1018 00:45:38,480 --> 00:45:42,590 Mae'n golygu mynd i'r cyfeiriad hwnnw ac yn rhoi pa rif yno? 1019 00:45:42,590 --> 00:45:43,870 Rhowch y rhif 42 yno. 1020 00:45:43,870 --> 00:45:47,590 Seren y golygu mynd i beth sydd yn y y a rhowch y rhif 13 yno. 1021 00:45:47,590 --> 00:45:48,600 >> Ond arhoswch funud. 1022 00:45:48,600 --> 00:45:51,640 Beth sydd yn y ar hyn o bryd? 1023 00:45:51,640 --> 00:45:54,950 Pa gyfeiriad yn y storio? 1024 00:45:54,950 --> 00:45:55,770 Nid ydym yn gwybod, dde? 1025 00:45:55,770 --> 00:45:59,230 Nid ydym erioed wedi unwaith yn defnyddio'r aseiniad gweithredwr sy'n cynnwys y. 1026 00:45:59,230 --> 00:46:03,370 Felly, y fel sydd wedi'i ddatgan ar yr ail linell Cod yn unig yw rhywfaint o werth garbage, yn fawr 1027 00:46:03,370 --> 00:46:04,760 marc cwestiwn fel petai. 1028 00:46:04,760 --> 00:46:07,230 Gallai fod yn pwyntio ar hap i unrhyw beth yn y cof, a 1029 00:46:07,230 --> 00:46:08,340 yn gyffredinol wael. 1030 00:46:08,340 --> 00:46:13,540 >> Felly, cyn gynted ag y byddwn yn cyrraedd y llinell yno, seren y yn hafal i 13, rhywbeth drwg, 1031 00:46:13,540 --> 00:46:17,220 rhywbeth drwg iawn yn ymwneud â i ddigwydd i Binky. 1032 00:46:17,220 --> 00:46:25,810 Felly, gadewch i ni weld beth sy'n mynd i roi diwedd ar i fyny digwydd i Binky yma yn y cofnod hwn 1033 00:46:25,810 --> 00:46:26,200 neu felly edrychwch. 1034 00:46:26,200 --> 00:46:26,490 >> [VIDEO Playback] 1035 00:46:26,490 --> 00:46:26,745 >> -Hey, Binky. 1036 00:46:26,745 --> 00:46:27,000 Wake i fyny. 1037 00:46:27,000 --> 00:46:29,296 Mae'n amser am hwyl pwyntydd. 1038 00:46:29,296 --> 00:46:30,680 >> -Beth sy'n bod? 1039 00:46:30,680 --> 00:46:31,980 Dysgu am awgrymiadau? 1040 00:46:31,980 --> 00:46:34,010 O, nwyddau. 1041 00:46:34,010 --> 00:46:37,220 >> -Wel, i ddechrau, mae'n debyg ein bod mynd i angen ychydig o gyngor. 1042 00:46:37,220 --> 00:46:37,930 >> -OK. 1043 00:46:37,930 --> 00:46:41,650 Mae'r cod hwn yn clustnodi dau awgrymiadau sy'n gallu pwyntio at gyfanrifau. 1044 00:46:41,650 --> 00:46:43,760 >> -OK, wel, yr wyf yn gweld y ddau awgrymiadau. 1045 00:46:43,760 --> 00:46:45,850 Ond nid yw'n ymddangos iddynt fod yn pwyntio at unrhyw beth. 1046 00:46:45,850 --> 00:46:46,490 >> -Mae hynny'n iawn. 1047 00:46:46,490 --> 00:46:48,630 I ddechrau, nid yw arwyddion yn cyfeirio at unrhyw beth. 1048 00:46:48,630 --> 00:46:51,700 Y pethau maent yn cyfeirio at eu galw pointees, a gosod i fyny yn 1049 00:46:51,700 --> 00:46:52,850 cam ar wahân. 1050 00:46:52,850 --> 00:46:53,740 >> -O, iawn, iawn. 1051 00:46:53,740 --> 00:46:54,500 Yr wyf yn gwybod hynny. 1052 00:46:54,500 --> 00:46:56,270 Mae'r pointees ar wahân. 1053 00:46:56,270 --> 00:46:58,553 Felly, sut ydych chi'n dyrannu pointee? 1054 00:46:58,553 --> 00:46:59,480 >> -OK. 1055 00:46:59,480 --> 00:47:03,707 Wel, y cod yn dyrannu gyfanrifau newydd pointee, ac mae'r rhan hon yn gosod x 1056 00:47:03,707 --> 00:47:05,520 i dynnu sylw iddo. 1057 00:47:05,520 --> 00:47:06,760 >> -Hey, sy'n edrych yn well. 1058 00:47:06,760 --> 00:47:08,520 Felly gwnewch yn ei wneud rhywbeth. 1059 00:47:08,520 --> 00:47:09,530 >> -OK. 1060 00:47:09,530 --> 00:47:14,110 'N annhymerus' dereference y pwyntydd x i storio y rhif 42 yn ei pointee. 1061 00:47:14,110 --> 00:47:17,660 Am y tric hwn, bydd angen fy hud I ffon o dereferencing. 1062 00:47:17,660 --> 00:47:20,695 >> -Mae eich ffon hud dereferencing? 1063 00:47:20,695 --> 00:47:22,632 Uh, mae hynny'n wych. 1064 00:47:22,632 --> 00:47:24,620 >> -Mae hyn yn beth y cod yn edrych fel. 1065 00:47:24,620 --> 00:47:27,526 'N annhymerus' jyst sefydlu nifer, ac - 1066 00:47:27,526 --> 00:47:28,250 >> -Hey, yn edrych. 1067 00:47:28,250 --> 00:47:29,680 Yno mae'n mynd. 1068 00:47:29,680 --> 00:47:34,520 Felly gwneud dereference ar x dilyn y saeth i ddefnyddio ei pointee. 1069 00:47:34,520 --> 00:47:36,690 Yn yr achos hwn, i storio 42 i mewn 'na. 1070 00:47:36,690 --> 00:47:40,890 Hey, ceisiwch ddefnyddio i storio nifer y 13 drwy'r pwyntydd arall, y. 1071 00:47:40,890 --> 00:47:42,125 >> -OK. 1072 00:47:42,125 --> 00:47:46,810 'N annhymerus' jyst yn mynd dros yma i y a gael y rhif 13 ei sefydlu. 1073 00:47:46,810 --> 00:47:50,890 Ac yna cymryd y ffon o dereferencing a dim ond - 1074 00:47:50,890 --> 00:47:52,430 Whoa! 1075 00:47:52,430 --> 00:47:53,030 >> -O, hey. 1076 00:47:53,030 --> 00:47:54,610 Nad oedd yn gweithio. 1077 00:47:54,610 --> 00:47:58,200 Dweud, Binky, nid wyf yn credu bod y dereferencing y yn syniad da, 1078 00:47:58,200 --> 00:48:01,370 oherwydd sefydlu'r pointee yn gam ar wahân. 1079 00:48:01,370 --> 00:48:03,460 Ac nid wyf yn credu ein bod byth yn gwneud hynny. 1080 00:48:03,460 --> 00:48:03,810 >> -Hmm. 1081 00:48:03,810 --> 00:48:05,160 Pwynt da. 1082 00:48:05,160 --> 00:48:07,410 >> -Yeah, dyrannwyd y y pwyntydd. 1083 00:48:07,410 --> 00:48:10,045 Ond ni fyddwn byth osod i cyfeirio at pointee. 1084 00:48:10,045 --> 00:48:10,490 >> -Hmm. 1085 00:48:10,490 --> 00:48:12,170 Sylwgar iawn. 1086 00:48:12,170 --> 00:48:13,790 >> -Hey, rydych yn chwilio da yno, Binky. 1087 00:48:13,790 --> 00:48:16,920 Allwch chi drwsio fel bod y pwyntiau i'r un pointee ag x? 1088 00:48:16,920 --> 00:48:17,810 >> -Cadarn. 1089 00:48:17,810 --> 00:48:20,300 Byddaf yn defnyddio fy ffon hud aseiniad pwyntydd. 1090 00:48:20,300 --> 00:48:22,240 >> -A yw hynny'n mynd i fod yn problem fel o'r blaen? 1091 00:48:22,240 --> 00:48:22,665 >> -Dim. 1092 00:48:22,665 --> 00:48:24,300 Nid yw hyn yn cyffwrdd y pointees. 1093 00:48:24,300 --> 00:48:27,880 'I jyst yn newid un pwyntydd i bwynt at yr un peth ag un arall. 1094 00:48:27,880 --> 00:48:28,970 >> -O, rwy'n gweld. 1095 00:48:28,970 --> 00:48:31,730 Nawr y pwyntiau i'r un lle ag x. 1096 00:48:31,730 --> 00:48:32,450 Felly aros. 1097 00:48:32,450 --> 00:48:33,490 Yn awr y yn sefydlog. 1098 00:48:33,490 --> 00:48:34,630 Mae ganddo pointee. 1099 00:48:34,630 --> 00:48:36,520 Felly, gallwch roi cynnig ar y ffon o dereferencing eto 1100 00:48:36,520 --> 00:48:39,200 i anfon y 13 drosodd. 1101 00:48:39,200 --> 00:48:39,840 >> -OK. 1102 00:48:39,840 --> 00:48:41,570 Yma yn mynd. 1103 00:48:41,570 --> 00:48:42,870 >> -Hey, edrych ar hynny. 1104 00:48:42,870 --> 00:48:44,320 Nawr dereferencing gwaith ar y. 1105 00:48:44,320 --> 00:48:47,020 Ac oherwydd bod y awgrymiadau yn cael eu rhannu bod un pointee, maent yn 1106 00:48:47,020 --> 00:48:48,585 yn gweld y 13. 1107 00:48:48,585 --> 00:48:49,040 >> -Yeah. 1108 00:48:49,040 --> 00:48:49,670 Rhannu. 1109 00:48:49,670 --> 00:48:50,380 Beth bynnag. 1110 00:48:50,380 --> 00:48:52,290 Felly, rydym yn mynd lleoedd newid nawr? 1111 00:48:52,290 --> 00:48:52,970 >> -O, edrych. 1112 00:48:52,970 --> 00:48:54,150 Rydym yn allan o amser. 1113 00:48:54,150 --> 00:48:55,200 >> -Ond - 1114 00:48:55,200 --> 00:48:57,060 >> -Ond cofiwch y tri rheolau pwyntydd. 1115 00:48:57,060 --> 00:49:00,100 Rhif un, y strwythur sylfaenol yw bod gennych pwyntydd. 1116 00:49:00,100 --> 00:49:02,170 Ac mae'n tynnu drosodd i pointee. 1117 00:49:02,170 --> 00:49:04,160 Ond mae'r pwyntydd a pointee ar wahân. 1118 00:49:04,160 --> 00:49:06,460 Ac mae'r gwall cyffredin yw sefydlu pwyntydd, ond i 1119 00:49:06,460 --> 00:49:08,540 anghofio rhoi pointee. 1120 00:49:08,540 --> 00:49:12,460 >> Rhif dau, pwyntydd dereferencing yn dechrau ar y pwyntydd ac yn dilyn ei 1121 00:49:12,460 --> 00:49:14,570 saeth i ddefnyddio ei pointee. 1122 00:49:14,570 --> 00:49:18,640 Fel yr ydym i gyd yn gwybod, mae hyn ond yn gweithio os oes yn pointee, sy'n mynd yn ôl i 1123 00:49:18,640 --> 00:49:19,790 rheol rhif un. 1124 00:49:19,790 --> 00:49:23,670 >> Rhif tri, aseiniad pwyntydd yn cymryd un pwyntydd a newidiadau i dynnu sylw at 1125 00:49:23,670 --> 00:49:25,850 yr un pointee fel pwyntydd arall. 1126 00:49:25,850 --> 00:49:27,840 Felly, ar ôl yr aseiniad, y ddau awgrymiadau yn 1127 00:49:27,840 --> 00:49:29,430 cyfeirio at yr un pointee. 1128 00:49:29,430 --> 00:49:31,600 Weithiau, mae hynny'n galw rannu. 1129 00:49:31,600 --> 00:49:33,430 A dyna i gyd yna iddo, mewn gwirionedd. 1130 00:49:33,430 --> 00:49:33,840 Bye bye awr. 1131 00:49:33,840 --> 00:49:34,300 >> [VIDEO END Playback] 1132 00:49:34,300 --> 00:49:36,940 >> DAVID Malan: Felly mwy ar awgrymiadau, mwy ar Binky yr wythnos nesaf. 1133 00:49:36,940 --> 00:49:38,190 Byddwn yn eich gweld ar ddydd Llun. 1134 00:49:38,190 --> 00:49:42,187