1 00:00:00,000 --> 00:00:03,381 >> [Daqq tal-mużika] 2 00:00:03,381 --> 00:00:10,626 3 00:00:10,626 --> 00:00:11,610 >> [Daqq video] 4 00:00:11,610 --> 00:00:13,640 >> -He S tinsab. 5 00:00:13,640 --> 00:00:14,380 >> -Dwar xiex? 6 00:00:14,380 --> 00:00:17,182 >> -I Do not know. 7 00:00:17,182 --> 00:00:19,990 >> -Allura Dak li nafu? 8 00:00:19,990 --> 00:00:23,145 >> -Li Fil 09:15, Ray Santoya kien fil-ATM. 9 00:00:23,145 --> 00:00:23,644 -Yeah. 10 00:00:23,644 --> 00:00:27,030 Għalhekk il-kwistjoni hija, dak kien hu tagħmel fil 09:16? 11 00:00:27,030 --> 00:00:29,720 >> -Shooting-Millimetru 9 fuq xi ħaġa. 12 00:00:29,720 --> 00:00:31,540 Forsi hu ra l-sniper. 13 00:00:31,540 --> 00:00:33,412 >> -Jew kien jaħdem miegħu. 14 00:00:33,412 --> 00:00:34,340 >> -Wait. 15 00:00:34,340 --> 00:00:36,200 Mur lura wieħed. 16 00:00:36,200 --> 00:00:36,975 >> Liema tara? 17 00:00:36,975 --> 00:00:44,400 18 00:00:44,400 --> 00:00:47,805 >> -Bring Wiċċu up full screen. 19 00:00:47,805 --> 00:00:48,680 >> Nuċċalijiet -His. 20 00:00:48,680 --> 00:00:50,060 >> -Hemm L riflessjoni. 21 00:00:50,060 --> 00:01:00,455 22 00:01:00,455 --> 00:01:02,280 >> -Hija Hija l-tim tal-baseball Nuevitas. 23 00:01:02,280 --> 00:01:03,110 C'est logo tagħhom. 24 00:01:03,110 --> 00:01:05,820 >> -u Hu tkellem lil min liebes dak ġakketta. 25 00:01:05,820 --> 00:01:06,670 >> [END Daqq] 26 00:01:06,670 --> 00:01:07,628 >> DAVID Malan: Kull dritt. 27 00:01:07,628 --> 00:01:11,210 Dan huwa CS50 u dan huwa daqsxejn aktar ta [inaudible] li magħhom int 28 00:01:11,210 --> 00:01:12,890 dabbling bil-problema stabbiliti erba '. 29 00:01:12,890 --> 00:01:16,606 Illum tibda tfittex ftit aktar profondament fil dawn l-affarijiet imsejħa pointers, 30 00:01:16,606 --> 00:01:18,480 li anki jekk huwa suġġett pretty arcane, 31 00:01:18,480 --> 00:01:20,813 jirriżulta li huwa għaddej jkun il-mezz li bih nistgħu 32 00:01:20,813 --> 00:01:24,320 tista 'tibda bini u l-assemblaġġ programmi ħafna aktar sofistikati. 33 00:01:24,320 --> 00:01:28,150 Iżda aħna ma kien nhar l-Erbgħa l-aħħar permezz ta 'xi claymation ewwel. 34 00:01:28,150 --> 00:01:30,190 Allura dan, irtirar, hija Binky u aħna użati lilu 35 00:01:30,190 --> 00:01:33,148 li tagħti ħarsa lejn programm li ma verament tagħmel xejn interessanti, 36 00:01:33,148 --> 00:01:34,950 iżda hija ma jikxfu xi ftit problemi. 37 00:01:34,950 --> 00:01:38,570 Allura biex tibda llum, għaliex ma we walk malajr permezz ta 'ftit ta' dawn il-passi, 38 00:01:38,570 --> 00:01:41,920 jippruvaw jiddistillaw fi termini tal-bniedem eżattament x'inhu għaddej hawn 39 00:01:41,920 --> 00:01:45,410 u għaliex dan huwa ħażin, u mbagħad jimxu fuq u fil-fatt jibda jinbena xi ħaġa 40 00:01:45,410 --> 00:01:46,309 ma din it-teknika? 41 00:01:46,309 --> 00:01:48,350 Allura dawn kienu l-ewwel żewġ linji f'dan il-programm 42 00:01:48,350 --> 00:01:51,340 u f'termini laymans, dak huma dawn iż-żewġ linji tagħmel? 43 00:01:51,340 --> 00:01:55,600 Xi ħadd li raġonevolment komda ma 'dak li ddikjarat fuq l-iskrin? 44 00:01:55,600 --> 00:01:58,340 45 00:01:58,340 --> 00:02:00,120 Liema huma dawn iż-żewġ linji tagħmel? 46 00:02:00,120 --> 00:02:02,070 Huwa mhux kollha li differenti minn ġimgħa, 47 00:02:02,070 --> 00:02:03,611 iżda jkun hemm xi simbolu speċjali ġdid. 48 00:02:03,611 --> 00:02:04,152 Yeah? 49 00:02:04,152 --> 00:02:05,628 Lura hemm. 50 00:02:05,628 --> 00:02:07,092 >> UDJENZA: Tiddikjara pointers? 51 00:02:07,092 --> 00:02:08,050 DAVID Malan: Say mill-ġdid? 52 00:02:08,050 --> 00:02:08,860 UDJENZA: Tiddikjara pointers? 53 00:02:08,860 --> 00:02:11,776 DAVID Malan: pointers tiddikjara u ejja tirfina ftit aktar. 54 00:02:11,776 --> 00:02:14,050 UDJENZA: [inaudible] indirizz x u mbagħad y. 55 00:02:14,050 --> 00:02:15,300 DAVID Malan: U mbagħad jindirizza. 56 00:02:15,300 --> 00:02:18,550 Allura speċifikament dak li aħna qed tagħmel huwa aħna tiddikjara żewġ varjabbli. 57 00:02:18,550 --> 00:02:21,252 Dawn il-varjabbli, għalkemm, ser li jkunu ta 'stilla int tip, li 58 00:02:21,252 --> 00:02:23,210 b'mod aktar speċifiku jfisser huma ser taħżen 59 00:02:23,210 --> 00:02:26,450 l-indirizz ta 'int, rispettivament, X u Y. 60 00:02:26,450 --> 00:02:27,660 Issa hemm xi valuri? 61 00:02:27,660 --> 00:02:32,621 Hemm xi indirizzi attwali f'dawn żewġ varjabbli f'dan il-punt fil-ħin? 62 00:02:32,621 --> 00:02:33,120 No 63 00:02:33,120 --> 00:02:35,030 Huwa biss hekk imsejħa valuri taż-żibel. 64 00:02:35,030 --> 00:02:38,120 Jekk inti ma attwalment tassenja varjabbli, ikun x'ikun kien fil RAM 65 00:02:38,120 --> 00:02:42,224 qabel se timla ma 'żerijiet u dawk iż ta 'dawk varjabbli. 66 00:02:42,224 --> 00:02:44,140 Iżda aħna għadhom ma jafux liema huma u dak l 67 00:02:44,140 --> 00:02:47,060 se jkun kruċjali għas għaliex Binky mitlufa kap tiegħu aħħar ġimgħa. 68 00:02:47,060 --> 00:02:49,980 >> Għalhekk din kienet l claymation Inkarnazzjoni ta 'dan 69 00:02:49,980 --> 00:02:53,580 fejn inti għandek biss żewġ varjabbli, biċċiet ċirkolari ftit ta 'tafal, 70 00:02:53,580 --> 00:02:57,330 li jista 'jaħżen varjabbli, iżda bħala l-vleġeġ jitgeżwer jissuġġerixxu, 71 00:02:57,330 --> 00:03:00,640 dawn mhux qed attwalment tipponta biex kullimkien magħruf per se. 72 00:03:00,640 --> 00:03:03,670 Iva allura kellna din il-linja, u dan kien aħħar ġimgħa ġdid, malloc għall-memorja 73 00:03:03,670 --> 00:03:07,130 allokazzjoni, li huwa biss mod fancy javżak-sistema operattiva, Linux 74 00:03:07,130 --> 00:03:09,750 jew Mac OS jew Windows, ħej, agħti lili xi memorja, 75 00:03:09,750 --> 00:03:11,780 u kull ma għandek tgħid is-sistema operattiva 76 00:03:11,780 --> 00:03:14,699 huwa dak meta jitolbu dan għall-memorja. 77 00:03:14,699 --> 00:03:16,990 Huwa mhux se kura liema int se tagħmel magħha, 78 00:03:16,990 --> 00:03:19,786 imma inti trid tghid l-funzjonament sistema liema permezz ta 'malloc. 79 00:03:19,786 --> 00:03:20,286 Yeah? 80 00:03:20,286 --> 00:03:21,078 >> UDJENZA: Kemm? 81 00:03:21,078 --> 00:03:21,994 DAVID Malan: Kemm? 82 00:03:21,994 --> 00:03:25,280 Kemm fil bytes, u għalhekk, dan, għal darb'oħra, eżempju artifiċjali, huwa biss qal, 83 00:03:25,280 --> 00:03:27,360 agħtini l-daqs ta 'int. 84 00:03:27,360 --> 00:03:30,550 Issa, id-daqs ta 'int huwa erba bytes jew 32 bits. 85 00:03:30,550 --> 00:03:32,850 Allura dan huwa biss mod ta ' qal, ħej, sistema operattiva, 86 00:03:32,850 --> 00:03:37,290 tagħti me erba 'bytes ta' memorja li nista 'nuża għad-dispożizzjoni tiegħi, 87 00:03:37,290 --> 00:03:40,560 u speċifikament, dak ma ritorn malloc rigward 88 00:03:40,560 --> 00:03:41,795 għal dak blokki ta 'erba' bytes? 89 00:03:41,795 --> 00:03:44,110 90 00:03:44,110 --> 00:03:44,860 UDJENZA: Indirizz? 91 00:03:44,860 --> 00:03:45,901 DAVID Malan: L-indirizz. 92 00:03:45,901 --> 00:03:47,580 L-indirizz ta 'dak blokki ta' erba 'bytes. 93 00:03:47,580 --> 00:03:48,190 Eżattament. 94 00:03:48,190 --> 00:03:51,430 U hekk dan huwa dak maħżun fl-aħħar fil x u hu għalhekk li aħna ma verament 95 00:03:51,430 --> 00:03:55,240 kura dak in-numru ta 'dik indirizz huwa, jekk huwa OX1 jew ox2 96 00:03:55,240 --> 00:03:57,110 jew xi indirizz hexadeċimali cryptic. 97 00:03:57,110 --> 00:03:59,850 Aħna biss kura pictorially li dak il-varjabbli x issa huwa 98 00:03:59,850 --> 00:04:01,630 tipponta lejn dak blokki ta 'memorja. 99 00:04:01,630 --> 00:04:05,570 Allura l-vleġġa jirrappreżenta pointer, jew b'mod aktar speċifiku, l-indirizz tal-memorja. 100 00:04:05,570 --> 00:04:09,120 Iżda għal darb'oħra, aħna ma tipikament kura x'inhuma dawn l-indirizzi attwali huma. 101 00:04:09,120 --> 00:04:11,780 Issa, din il-linja jgħid dak f'termini laymans? 102 00:04:11,780 --> 00:04:14,330 Star x gets 42 virgola. 103 00:04:14,330 --> 00:04:17,390 Xi jfisser dan? 104 00:04:17,390 --> 00:04:18,200 Inti tixtieq tmur? 105 00:04:18,200 --> 00:04:20,102 Ma scratch għonq tiegħek. 106 00:04:20,102 --> 00:04:22,360 >> UDJENZA: L-indirizz ta 'x hija fil-42. 107 00:04:22,360 --> 00:04:24,300 >> DAVID Malan: L-indirizz ta 'x huwa fil 42. 108 00:04:24,300 --> 00:04:25,190 Mhux pjuttost. 109 00:04:25,190 --> 00:04:28,485 Allura qrib, iżda pjuttost mhux, għaliex hemm l-istilla li l-prefiss dan x. 110 00:04:28,485 --> 00:04:29,860 Għalhekk għandna bżonn li tweak ftit. 111 00:04:29,860 --> 00:04:31,032 Yeah? 112 00:04:31,032 --> 00:04:36,044 >> UDJENZA: Il-valur li l- pointer x hija li tipponta lejn huwa 42. 113 00:04:36,044 --> 00:04:36,710 DAVID Malan: OK. 114 00:04:36,710 --> 00:04:40,840 Il-valur li l-pointer x hija tipponta lejn, ejja ngħidu, għandhom ikunu 42, 115 00:04:40,840 --> 00:04:44,165 jew imqiegħda mod ieħor, l-istilla x jgħid, mur għal dak kollu indirizz 116 00:04:44,165 --> 00:04:48,340 huwa x, jekk huwa 1 Oxford Triq jew 33 Oxford Street 117 00:04:48,340 --> 00:04:51,850 jew OX1 jew ox33, ikun x'ikun dak l-indirizz numeriku huwa, 118 00:04:51,850 --> 00:04:54,380 star x hija l-dereferencing ta x. 119 00:04:54,380 --> 00:04:57,297 Allura jmorru f'dak l-indirizz u mbagħad iwettqu l-għadd 42 hemmhekk. 120 00:04:57,297 --> 00:04:59,380 Allura li ikun b'mod ekwivalenti ta 'tgħid li. 121 00:04:59,380 --> 00:05:01,860 Allura li kollox multa u mbagħad aħna se jirrappreżentaw l-istampa 122 00:05:01,860 --> 00:05:05,370 kif ġej fejn konna miżjud l 42 sa dik blokki ta 'erba 123 00:05:05,370 --> 00:05:09,370 bytes fuq il-lemin, imma din il-linja kienet fejn l-affarijiet marru awry 124 00:05:09,370 --> 00:05:11,120 u l-kap Binky tal popped off f'dan il-punt, 125 00:05:11,120 --> 00:05:15,290 minħabba affarijiet ħżiena jiġri meta inti dereference valuri żibel 126 00:05:15,290 --> 00:05:18,210 jew inti dereference invalida pointers, u jien ngħidlek invalida 127 00:05:18,210 --> 00:05:21,020 minħabba f'dan il-punt fil- istorja, dak li hu ġewwa ta 'y? 128 00:05:21,020 --> 00:05:24,440 X'inhu l-valur tal y bbażati fuq il-ftit passi passat? 129 00:05:24,440 --> 00:05:25,360 Yeah? 130 00:05:25,360 --> 00:05:26,115 Dak X'inhu? 131 00:05:26,115 --> 00:05:26,990 >> UDJENZA: An indirizz. 132 00:05:26,990 --> 00:05:28,460 DAVID Malan: An indirizz. 133 00:05:28,460 --> 00:05:31,910 Għandu jkun indirizz imma jiena initialized dan? 134 00:05:31,910 --> 00:05:32,800 So I għadhom ma. 135 00:05:32,800 --> 00:05:35,430 Allura dak li hu magħruf li jkun fil hemmhekk? 136 00:05:35,430 --> 00:05:37,590 Huwa biss xi valur żibel. 137 00:05:37,590 --> 00:05:41,500 Dan jista 'jkun kwalunkwe indirizz minn żero sa 2 biljuni jekk għandek żewġ gigs ta 'RAM, 138 00:05:41,500 --> 00:05:44,289 jew żero għal 4 biljun jekk inti stajt ltqajna erba gigabytes ta 'RAM. 139 00:05:44,289 --> 00:05:46,080 Huwa xi valur żibel, iżda l-problema hija 140 00:05:46,080 --> 00:05:48,200 li s-sistema operattiva, jekk ma jkunx tak 141 00:05:48,200 --> 00:05:51,140 li blokki ta 'memorja speċifikament li inti qed tipprova tmur, 142 00:05:51,140 --> 00:05:54,650 huwa ġeneralment ser jikkawża dak Rajna bħala tort segmentazzjoni. 143 00:05:54,650 --> 00:05:57,810 Allura fil-fatt, kwalunkwe fostkom li għadhom tħabtu lejn problemi fil-ħinijiet uffiċċju 144 00:05:57,810 --> 00:06:00,393 jew problemi li l-aktar ġeneralment ma jippruvaw figura 145 00:06:00,393 --> 00:06:02,150 tort segmentazzjoni, li ġeneralment tfisser 146 00:06:02,150 --> 00:06:05,017 int jmissu segment ta memorja li inti ma għandu jkun. 147 00:06:05,017 --> 00:06:07,350 Int jmissu memorja li is-sistema operattiva ma jkunx 148 00:06:07,350 --> 00:06:10,450 inti permess għal mess, jekk huwa billi esaġerata fil-firxa tiegħek 149 00:06:10,450 --> 00:06:12,870 jew li tibda issa, jekk huwa għaliex int jmissu 150 00:06:12,870 --> 00:06:14,780 memorja li biss xi valur żibel. 151 00:06:14,780 --> 00:06:18,230 >> Allura tagħmel star x hawnhekk hija tip ta 'mġiba mhux definiti. 152 00:06:18,230 --> 00:06:22,030 Inti qatt ma għandhom jagħmlu dan minħabba odds huma, il-programm jinsab biss se crash, 153 00:06:22,030 --> 00:06:24,050 għaliex inti qed tgħid, mur dan l-indirizz 154 00:06:24,050 --> 00:06:27,000 u inti għandek ebda idea fejn dak l-indirizz fil-fatt hu. 155 00:06:27,000 --> 00:06:30,300 Għalhekk is-sistema operattiva huwa probabbli ser crash program tiegħek 156 00:06:30,300 --> 00:06:33,840 bħala riżultat u tabilħaqq, dan huwa dak li ġara hemm biex Binky. 157 00:06:33,840 --> 00:06:37,210 Allura finalment, Binky fiss din il-problema ma 'dan. 158 00:06:37,210 --> 00:06:38,909 Allura dak il-programm innifsu kien difettuż. 159 00:06:38,909 --> 00:06:41,450 Imma jekk inti tip ta nimxu 'l quddiem u jesegwixxi din il-linja minflok, 160 00:06:41,450 --> 00:06:45,580 y ugwali x ifisser biss x'ikun address huwa x, wkoll poġġih fil y. 161 00:06:45,580 --> 00:06:48,740 >> U hekk pictorially, konna rappreżentati dan b'żewġ vleġeġ 162 00:06:48,740 --> 00:06:51,570 minn x u mill tipponta y l-istess post. 163 00:06:51,570 --> 00:06:55,760 Allura min-naħa semantika, x hija ugwali li y peress li kemm ta 'dawk 164 00:06:55,760 --> 00:07:00,300 qed jaħżnu l-istess indirizz, jimmiraw li tipponta lejn 42, 165 00:07:00,300 --> 00:07:04,910 u issa, meta inti tgħidli star y, mur l-indirizz y, 166 00:07:04,910 --> 00:07:06,790 dan m'għandux effett sekondarju interessanti. 167 00:07:06,790 --> 00:07:10,320 Allura l-indirizz fl y hija l- istess ħaġa bħat-indirizz fil x. 168 00:07:10,320 --> 00:07:15,060 Mela jekk inti tgħidli tmur għall-indirizz fil y u jibdlu l-valur sa 13, 169 00:07:15,060 --> 00:07:17,140 li inkella huwa affettwat? 170 00:07:17,140 --> 00:07:21,100 X huwa, punt D, biex ngħidu hekk, għandhomx jiġu affettwati wkoll. 171 00:07:21,100 --> 00:07:24,340 >> U fil-fatt, kif Nick ġibdet din l-istampa fil claymation kien eżattament dan. 172 00:07:24,340 --> 00:07:28,665 Anki jekk aħna isegwu l-pointer y, aħna spiċċajna fl-istess post, 173 00:07:28,665 --> 00:07:32,780 u hekk jekk konna biex jistampaw out x jew pointee y, il 174 00:07:32,780 --> 00:07:35,720 allura aħna se tara l-valur ta '13. 175 00:07:35,720 --> 00:07:37,927 Issa, I say pointee li jkun konsistenti mal-video. 176 00:07:37,927 --> 00:07:39,760 Programmaturi, li tiegħi għarfien, qatt fil-fatt 177 00:07:39,760 --> 00:07:42,460 jiġifieri l-pointee kelma, dak li huwa osservat 178 00:07:42,460 --> 00:07:44,650 fil, iżda għal konsistenza mal-video, realizzata 179 00:07:44,650 --> 00:07:47,520 li kollox dan kien fisser f'dik is-sitwazzjoni. 180 00:07:47,520 --> 00:07:54,190 Allura kwalnkwe kwistjoni dwar claymation jew pointers jew malloc għadha biss? 181 00:07:54,190 --> 00:07:54,850 Nru? 182 00:07:54,850 --> 00:07:55,470 Kull dritt. 183 00:07:55,470 --> 00:07:58,560 >> Allura mingħajr aktar dewmien, ejja tagħti ħarsa 184 00:07:58,560 --> 00:08:00,700 lejn fejn dan għandu fil-fatt ġew użati għal xi żmien. 185 00:08:00,700 --> 00:08:03,580 Allura aħna kellna din il-librerija CS50 li ltqajna kollha ta 'dawn il-funzjonijiet. 186 00:08:03,580 --> 00:08:06,810 Imxejna użati GetInt ħafna, GetString, probabbilment GetLongLong qabel 187 00:08:06,810 --> 00:08:09,840 fi PSet tiegħi wieħed jew hekk, imma dak li fil-fatt ilu għaddej? 188 00:08:09,840 --> 00:08:12,920 Well, ejja tagħti ħarsa taħt il-barnuża fi programm li 189 00:08:12,920 --> 00:08:17,017 tispira għaliex aħna nagħtuk l-CS50 librerija, u tabilħaqq mill-aħħar ġimgħa, 190 00:08:17,017 --> 00:08:18,850 bdejna teħid dawk roti ta 'taħriġ off. 191 00:08:18,850 --> 00:08:21,080 Allura dan issa huwa magħżul ta 'postmortem ta' dak 192 00:08:21,080 --> 00:08:23,690 ilu għaddej ġewwa l-librerija CS50, 193 00:08:23,690 --> 00:08:27,250 anke jekk aħna issa se tibda miexja bogħod minnha għal ħafna programmi. 194 00:08:27,250 --> 00:08:29,460 >> Allura dan huwa programm imsejjaħ scanf 0. 195 00:08:29,460 --> 00:08:30,510 Huwa super qasir. 196 00:08:30,510 --> 00:08:33,909 Hija biss għandha dawn il-linji, iżda tintroduċi funzjoni msejħa scanf 197 00:08:33,909 --> 00:08:36,909 li aħna qed attwalment għaddejjin biex tara fil mument ġewwa tal-librerija CS50, 198 00:08:36,909 --> 00:08:38,600 għalkemm f'forma kemmxejn differenti. 199 00:08:38,600 --> 00:08:41,330 Allura dan il-programm fuq il-linja 16 huwa li tiddikjara varjabbli x. 200 00:08:41,330 --> 00:08:43,150 Allura tagħti me erba 'bytes għal int. 201 00:08:43,150 --> 00:08:45,750 Huwa kien javżak utent, numru jogħġbok, u mbagħad 202 00:08:45,750 --> 00:08:49,010 din hija linja interessanti li attwalment torbot flimkien il-ġimgħa li għaddiet 203 00:08:49,010 --> 00:08:49,790 u dan. 204 00:08:49,790 --> 00:08:53,230 Scanf, u mbagħad tinnota li tieħu string format, bħal printf, 205 00:08:53,230 --> 00:08:57,480 % i tfisser int, u mbagħad li tieħu tieni argument li jistenna ftit 206 00:08:57,480 --> 00:08:58,260 funky. 207 00:08:58,260 --> 00:09:01,880 Huwa ampersand x, u li jiġi mfakkar, rajna biss dan darba ġimgħa li għaddiet. 208 00:09:01,880 --> 00:09:03,465 Xi jfisser ampersand x jirrappreżenta? 209 00:09:03,465 --> 00:09:06,210 210 00:09:06,210 --> 00:09:08,450 X'jagħmel ampersand tagħmel C? 211 00:09:08,450 --> 00:09:08,950 Yeah? 212 00:09:08,950 --> 00:09:10,024 >> UDJENZA: L-indirizz ta '. 213 00:09:10,024 --> 00:09:11,190 DAVID Malan: L-indirizz ta '. 214 00:09:11,190 --> 00:09:13,190 Allura huwa l-oppost tal-operatur stilla, 215 00:09:13,190 --> 00:09:17,270 billi l-operatur star jgħid, mur dan l-indirizz, l-operatur ampersand 216 00:09:17,270 --> 00:09:20,280 jgħid, insemmu l- indirizz ta 'dan il-varjabbli, 217 00:09:20,280 --> 00:09:23,530 u għalhekk dan huwa importanti, għaliex iskop scanf fil-ħajja 218 00:09:23,530 --> 00:09:26,320 huwa li skennjati l-utent tal kontribut mill-keyboard, 219 00:09:26,320 --> 00:09:29,970 jiddependi fuq xi hu jew hi tipi, u mbagħad jaqra input li utent 220 00:09:29,970 --> 00:09:32,970 fi varjabbli, imma aħna raw fl-aħħar ġimgħatejn 221 00:09:32,970 --> 00:09:36,080 li dik il-funzjoni tpartit li aħna ppruvaw sforz biex jimplimentaw 222 00:09:36,080 --> 00:09:37,110 kien biss imkisser. 223 00:09:37,110 --> 00:09:42,470 Ifakkar li bil-funzjoni tpartit, jekk aħna biss iddikjarati A u B kif ints, 224 00:09:42,470 --> 00:09:47,040 għamilna b'suċċess tpartit l- żewġ varjabbli ġewwa tal swap 225 00:09:47,040 --> 00:09:50,080 bħad bil-ħalib u ĠU iżda hekk kif swap lura, 226 00:09:50,080 --> 00:09:55,200 dak li kien ir-riżultat fir-rigward li x uy, il-valuri oriġinali? 227 00:09:55,200 --> 00:09:55,700 Xejn. 228 00:09:55,700 --> 00:09:56,200 Yeah. 229 00:09:56,200 --> 00:09:59,754 Xejn ġara dak iż-żmien, minħabba swaps tinbidel biss kopji lokali tiegħu, 230 00:09:59,754 --> 00:10:01,670 li fi kliem ieħor, kull dan iż-żmien, kull meta konna 231 00:10:01,670 --> 00:10:04,010 qed jittrasferixxu fl-argumenti funzjonijiet, aħna qed 232 00:10:04,010 --> 00:10:05,939 biss tgħaddi kopji ta 'dawn l-argumenti. 233 00:10:05,939 --> 00:10:07,980 Tista 'tagħmel ma' dak xi trid magħhom, 234 00:10:07,980 --> 00:10:10,890 iżda dawn qed tmur biex ikollhom l-ebda effett fuq il-valuri oriġinali. 235 00:10:10,890 --> 00:10:13,650 Allura dan huwa problematiku jekk inti jridu li jkollhom funzjoni simili scanf 236 00:10:13,650 --> 00:10:17,170 fil-ħajja, li l-għan huwa li scan input-utent mill-keyboard 237 00:10:17,170 --> 00:10:22,010 u mbagħad imla l-vojt, hekk li jitkellmu, jiġifieri, jagħti varjabbli bħal x 238 00:10:22,010 --> 00:10:25,410 valur, għaliex jekk jien kienu għal ftit jgħaddu x biex scanf, 239 00:10:25,410 --> 00:10:28,790 jekk inti tikkunsidra l-loġika ta 'l-aħħar ġimgħa, scanf tista 'tagħmel dak kollu li trid 240 00:10:28,790 --> 00:10:33,100 ma 'kopja ta x, iżda ma setgħux b'mod permanenti bidla x sakemm nagħtu 241 00:10:33,100 --> 00:10:37,120 scanf mappa teżor, biex ngħidu hekk, fejn x jimmarka l-post, fejn 242 00:10:37,120 --> 00:10:41,860 aħna jgħaddu fil-indirizz ta 'X sabiex scanf tista 'tmur hemm u fil-fatt bidla 243 00:10:41,860 --> 00:10:42,920 il-valur ta 'x. 244 00:10:42,920 --> 00:10:45,080 U hekk fil-fatt, kollha li dan il-programm ma 245 00:10:45,080 --> 00:10:53,180 jekk nagħmel scanf 0, fis-sors tiegħi Direttorju 5m, jagħmlu scanf 0, 246 00:10:53,180 --> 00:10:57,730 dot mmejla scanf, numru jekk jogħġbok 50, grazzi għall-50. 247 00:10:57,730 --> 00:11:01,020 >> Allura huwa mhux kollha li interessanti, imma dak li tassew qed jiġri 248 00:11:01,020 --> 00:11:04,820 hija li hekk kif I call scanf hawn, il-valur ta 'x 249 00:11:04,820 --> 00:11:06,410 qed jiġi permanentement. 250 00:11:06,410 --> 00:11:08,335 Issa, dan jidher sbieħ u tajba, u fil-fatt, 251 00:11:08,335 --> 00:11:11,200 Jidher bħal aħna ma verament bżonn il-librerija CS50 fil-livelli kollha aktar. 252 00:11:11,200 --> 00:11:13,960 Per eżempju, ejja jimxu dan darba aktar hawn. 253 00:11:13,960 --> 00:11:15,750 Let me terġa 'dan għat-tieni. 254 00:11:15,750 --> 00:11:20,600 Ejja nippruvaw numru jogħġbok u Minflok qal 50 bħal qabel, 255 00:11:20,600 --> 00:11:22,810 ejja biss jgħidu le. 256 00:11:22,810 --> 00:11:24,000 OK, dan huwa ftit stramb. 257 00:11:24,000 --> 00:11:25,270 KOLLOX SEW. 258 00:11:25,270 --> 00:11:28,680 U biss ftit nonsense hawn. 259 00:11:28,680 --> 00:11:31,170 Għalhekk ma jidhirx li jimmaniġġjaw sitwazzjonijiet żbaljati. 260 00:11:31,170 --> 00:11:33,620 Għalhekk għandna bżonn li minimament bidu jżid xi żball iċċekkjar- 261 00:11:33,620 --> 00:11:37,460 biex tiżgura li l-utent ikollu ittajpjat fil numru attwali bħall 50, 262 00:11:37,460 --> 00:11:40,720 minħabba kliem apparentement typing ma jinsabx bħala problematiċi, 263 00:11:40,720 --> 00:11:42,020 iżda probabbilment għandu jkun. 264 00:11:42,020 --> 00:11:46,450 >> Ejja nħarsu lejn din il-verżjoni issa li l- tentattiv tiegħi biex reimplement GetString. 265 00:11:46,450 --> 00:11:48,437 Jekk scanf għandha dan kollu funzjonalità mibnija, 266 00:11:48,437 --> 00:11:51,270 għaliex li aħna ġew dabbling ma 'dawn roti ta 'taħriġ bħal GetString? 267 00:11:51,270 --> 00:11:55,450 Well, hawnhekk huwa forsi tiegħi stess Verżjoni sempliċi ta 'GetString 268 00:11:55,450 --> 00:12:00,766 li biha ġimgħa ilu, I jista 'jkollhom qal, tagħti me a string u sejħa hija buffer. 269 00:12:00,766 --> 00:12:03,390 Illum, jien ser tibda biss qal star char, li, irtirar, 270 00:12:03,390 --> 00:12:04,400 huwa biss sinonimi. 271 00:12:04,400 --> 00:12:06,629 Huwa jistenna scarier iżda huwa l-istess ħaġa eżatt. 272 00:12:06,629 --> 00:12:09,420 Allura tagħti me a varjabbli imsejjaħ buffer li għaddej biex jaħżnu string, 273 00:12:09,420 --> 00:12:12,780 tell-sekwenza utent jekk jogħġbok, u mbagħad, bħad qabel, 274 00:12:12,780 --> 00:12:17,760 ejja tipprova li jissellef din il-lezzjoni scanf % s dan iż-żmien u mbagħad jgħaddu fi buffer. 275 00:12:17,760 --> 00:12:19,310 Issa, verifika sanità malajr. 276 00:12:19,310 --> 00:12:22,120 Why am I ma tgħid ampersand buffer dan iż-żmien? 277 00:12:22,120 --> 00:12:25,190 278 00:12:25,190 --> 00:12:26,625 Jiddeduċu mill-eżempju preċedenti. 279 00:12:26,625 --> 00:12:28,000 UDJENZA: Char star huwa pointer. 280 00:12:28,000 --> 00:12:29,920 DAVID Malan: Eżattament, minħabba dan iż-żmien, char 281 00:12:29,920 --> 00:12:34,080 star huwa diġà pointer, indirizz, billi definizzjoni ta 'dak star jkunu hemm. 282 00:12:34,080 --> 00:12:37,530 U jekk scanf jistenna indirizz, huwa biżżejjed biss biex jgħaddu fi buffer. 283 00:12:37,530 --> 00:12:39,260 I m'għandhomx bżonn li jgħidu buffer ampersand. 284 00:12:39,260 --> 00:12:42,177 Għall-kurjuż, inti tista tagħmel xi ħaġa bħal din. 285 00:12:42,177 --> 00:12:43,510 Dan ikollu tifsira differenti. 286 00:12:43,510 --> 00:12:47,240 Dan se jagħtuk pointer għal pointer, li huwa attwalment 287 00:12:47,240 --> 00:12:50,050 ħaġa valida C, iżda għal issa, ejja jżommha sempliċi 288 00:12:50,050 --> 00:12:51,750 u jżommu l-istorja konsistenti. 289 00:12:51,750 --> 00:12:54,100 Jien biss ser jgħaddu fil buffer u li korretta. 290 00:12:54,100 --> 00:12:56,487 Il-problema għalkemm hija din. 291 00:12:56,487 --> 00:12:58,820 Let me imorru quddiem u run dan programm wara kompilazzjoni tagħha. 292 00:12:58,820 --> 00:13:00,902 Jagħmlu scanf 1. 293 00:13:00,902 --> 00:13:02,610 Indanna dan, kompilatur tiegħi qbid żball tiegħi. 294 00:13:02,610 --> 00:13:04,090 Agħti me-tieni waħda. 295 00:13:04,090 --> 00:13:05,460 Clang. 296 00:13:05,460 --> 00:13:06,990 Ejja ngħidu scanf-1.c. 297 00:13:06,990 --> 00:13:10,880 298 00:13:10,880 --> 00:13:11,380 KOLLOX SEW. 299 00:13:11,380 --> 00:13:12,720 Hemm immorru. 300 00:13:12,720 --> 00:13:14,280 Ghandi bzonnha. 301 00:13:14,280 --> 00:13:16,750 CS50 ID għandha diversi settings tal-konfigurazzjoni 302 00:13:16,750 --> 00:13:18,280 li tipproteġik kontra lilek innifsek. 303 00:13:18,280 --> 00:13:21,300 I meħtieġa biex jiskonnettja dawk mill running clang manwalment dan iż-żmien. 304 00:13:21,300 --> 00:13:22,140 Allura string jekk jogħġbok. 305 00:13:22,140 --> 00:13:25,560 Jien ser jimxi 'l quddiem u t-tip fid-dinja bonjour favorit tiegħi. 306 00:13:25,560 --> 00:13:26,490 OK, nulli. 307 00:13:26,490 --> 00:13:27,700 Li mhux dak I ittajpjat. 308 00:13:27,700 --> 00:13:29,690 Allura huwa indikattiv ta ' xi ħaġa li tkun ħażina. 309 00:13:29,690 --> 00:13:33,920 Let me imorru quddiem u t-tip fi string verament twila. 310 00:13:33,920 --> 00:13:37,210 Grazzi għall-null u jien ma nafx jekk jien ser tkun kapaċi li jikkraxxja dan. 311 00:13:37,210 --> 00:13:40,240 Ejja nippruvaw kopja ftit pasta u ara jekk dan jgħin. 312 00:13:40,240 --> 00:13:43,290 Just paste ħafna ta 'dan. 313 00:13:43,290 --> 00:13:47,310 Huwa definittivament akbar string mis-soltu. 314 00:13:47,310 --> 00:13:51,450 Ejja biss verament tikteb. 315 00:13:51,450 --> 00:13:51,950 No 316 00:13:51,950 --> 00:13:52,650 Kkritikat dan. 317 00:13:52,650 --> 00:13:53,480 Kmand ma nstabx. 318 00:13:53,480 --> 00:13:54,550 Allura dak mhux relatati. 319 00:13:54,550 --> 00:13:56,440 Dan għaliex I pasted xi karattri ħżiena, 320 00:13:56,440 --> 00:13:59,780 iżda dan jirriżulta mhux sejjer jaħdem. 321 00:13:59,780 --> 00:14:03,510 >> Ejja nippruvaw dan darba aktar, minħabba huwa aktar gost jekk għandna attwalment crash dan. 322 00:14:03,510 --> 00:14:09,116 Ejja tip dan u issa, jien ser kopja string verament twila 323 00:14:09,116 --> 00:14:10,990 u issa ejja ara jekk irridu jista crash dan il-ħaġa. 324 00:14:10,990 --> 00:14:14,235 Avviż I jitħalla barra l-ispazji u linji ġodda u semicolons 325 00:14:14,235 --> 00:14:16,035 u l-karattri funky kollha. 326 00:14:16,035 --> 00:14:16,535 Ikteb. 327 00:14:16,535 --> 00:14:21,090 328 00:14:21,090 --> 00:14:22,880 U issa l-network jinsab biss li bil-mod. 329 00:14:22,880 --> 00:14:27,460 I miżmum Kmand-V twil wisq, b'mod ċar. 330 00:14:27,460 --> 00:14:28,190 Kkritikat dan! 331 00:14:28,190 --> 00:14:29,260 Kmand ma nstabx. 332 00:14:29,260 --> 00:14:29,780 >> KOLLOX SEW. 333 00:14:29,780 --> 00:14:32,240 Ukoll, il-punt huwa madankollu dawn li ġejjin. 334 00:14:32,240 --> 00:14:36,910 Allura dak li huwa attwalment għaddejjin fuq din id-dikjarazzjoni ma 335 00:14:36,910 --> 00:14:39,240 tal char buffer star fuq il-linja 16? 336 00:14:39,240 --> 00:14:41,820 Allura dak am I jkollna meta I tiddikjara pointer? 337 00:14:41,820 --> 00:14:47,440 All jien jkollna huwa valur erba byte imsejħa buffer, imma x'hemm ġewwa ta 'dan 338 00:14:47,440 --> 00:14:49,540 fil-mument? 339 00:14:49,540 --> 00:14:50,930 Huwa biss xi valur żibel. 340 00:14:50,930 --> 00:14:54,170 Minħabba li kwalunkwe ħin li inti tiddikjara varjabbli fis-C, huwa biss xi valur żibel, 341 00:14:54,170 --> 00:14:56,220 u aħna qed jibdew vjaġġ fuq din ir-realtà. 342 00:14:56,220 --> 00:14:59,720 Issa, meta I tell scanf, mur dan l-indirizz 343 00:14:59,720 --> 00:15:01,520 u tpoġġi kwalunkwe t-tipi utent fil. 344 00:15:01,520 --> 00:15:06,400 Jekk it-tipi utent fil bonjour dinja, ukoll, fejn ma nressaq dan? 345 00:15:06,400 --> 00:15:07,750 Buffer hija valur żibel. 346 00:15:07,750 --> 00:15:11,510 >> Allura dak it-tip ta 'prodotti simili vleġġa li l-tipponta li jaf fejn. 347 00:15:11,510 --> 00:15:13,880 Forsi huwa tipponta dritt hawn fil-memorja tiegħi. 348 00:15:13,880 --> 00:15:16,560 U hekk meta l-utent tipi fil bonjour dinja, 349 00:15:16,560 --> 00:15:22,380 il-programm jipprova jagħmel l- string bonjour dinja backslash 0 350 00:15:22,380 --> 00:15:23,910 f'dak blokki ta 'memorja. 351 00:15:23,910 --> 00:15:27,070 Iżda bi probabbiltà għolja, iżda ċar mhux 100% probabbiltà, 352 00:15:27,070 --> 00:15:30,440 il-kompjuter se mbagħad crash il-programm għaliex din m'hijiex 353 00:15:30,440 --> 00:15:32,490 memorja I għandhom jitħallew għall-mess. 354 00:15:32,490 --> 00:15:36,330 Allura fil-qosor, dan il-programm huwa difettuż għal eżattament dik ir-raġuni. 355 00:15:36,330 --> 00:15:38,070 Jien fundamentalment ma nagħmilx dak? 356 00:15:38,070 --> 00:15:42,366 Liema passi għandhom I titħalla barra, bħad aħna jitħalla barra bil ewwel eżempju Binky tal? 357 00:15:42,366 --> 00:15:42,866 Yeah? 358 00:15:42,866 --> 00:15:43,710 >> UDJENZA: allokazzjoni Memorja? 359 00:15:43,710 --> 00:15:45,001 >> DAVID Malan: allokazzjoni Memorja. 360 00:15:45,001 --> 00:15:48,400 I ma attwalment allokati kwalunkwe memorja għal dak string. 361 00:15:48,400 --> 00:15:50,270 Allura nistgħu jiffissaw dan fi ftit ta 'modi. 362 00:15:50,270 --> 00:15:52,700 Wieħed, nistgħu jżommha sempliċi u fil-fatt, issa int 363 00:15:52,700 --> 00:15:55,116 ser tibda biex tara imċajpra tal-linji bejn dak 364 00:15:55,116 --> 00:15:58,520 firxa hija, dak string hija, dak li star char hija, dak firxa ta 'Chars 365 00:15:58,520 --> 00:15:59,020 hu. 366 00:15:59,020 --> 00:16:02,450 Hawn tieni eżempju jinvolvu kordi u avviż 367 00:16:02,450 --> 00:16:05,690 kollha I ghamilt fuq il-linja 16 huwa, minflok ta 'tgħid 368 00:16:05,690 --> 00:16:09,530 li buffer se jkun char star, pointer għal blokki ta 'memorja, 369 00:16:09,530 --> 00:16:14,057 Jien ser tagħti b'mod proattiv ħafna myself buffer għal 16 karattri, 370 00:16:14,057 --> 00:16:16,390 u fil-fatt, jekk int familjari mal-buffering tul, 371 00:16:16,390 --> 00:16:20,570 probabbilment mid-dinja ta 'videos, fejn video huwa lqugħ, buffering, 372 00:16:20,570 --> 00:16:21,175 buffering. 373 00:16:21,175 --> 00:16:22,550 Ukoll, x'inhu l-konnessjoni hawn? 374 00:16:22,550 --> 00:16:24,960 Ukoll, Ġewwa l YouTube u ġewwa ta 'video players 375 00:16:24,960 --> 00:16:27,200 ġeneralment huwa firxa li l-akbar minn 16. 376 00:16:27,200 --> 00:16:30,340 Jista 'jkun firxa ta' daqs wieħed megabyte, forsi 10 megabytes, 377 00:16:30,340 --> 00:16:34,330 u f'dak firxa ma browser tiegħek tniżżel mazz sħiħ ta 'bytes, 378 00:16:34,330 --> 00:16:37,500 mazz sħiħ ta 'megabytes ta' video, u l-plejer video, 379 00:16:37,500 --> 00:16:40,930 Tal YouTube jew min i, jibda qari tal-bytes minn dak array, 380 00:16:40,930 --> 00:16:43,530 u kwalunkwe ħin li inti tara l- buffering kelma, buffering, 381 00:16:43,530 --> 00:16:46,350 dan ifisser l-attur għandu gotten sal-aħħar ta 'dak array. 382 00:16:46,350 --> 00:16:50,430 In-netwerk tant huwa baxx li ma jkunx mimlija mill-ġdid il-firxa b'aktar bytes 383 00:16:50,430 --> 00:16:55,610 u għalhekk int minn bits li juri lill-utent. 384 00:16:55,610 --> 00:16:59,430 >> Allura buffer huwa terminu apt hawn f'dik huwa biss firxa, blokki ta 'memorja. 385 00:16:59,430 --> 00:17:02,530 U dan se tiffissa lilha għaliex jirriżulta 386 00:17:02,530 --> 00:17:07,410 li inti jista 'jikkura arrays daqslikieku huma indirizzi, anki jekk buffer 387 00:17:07,410 --> 00:17:10,710 huwa biss simbolu, huwa sekwenza ta 'karattri, buffer, 388 00:17:10,710 --> 00:17:14,760 dan huwa utli għalija, l-programmer, inti tista 'tgħaddi l-isem tagħha madwar 389 00:17:14,760 --> 00:17:17,079 bħallikieku kienet pointer, daqs li kieku 390 00:17:17,079 --> 00:17:21,000 kienu l-indirizz ta 'blokki ta 'memorja għal 16 Chars. 391 00:17:21,000 --> 00:17:24,530 Allura dak li ngħid, I jistgħu jgħaddu l scanf eżattament din il-kelma 392 00:17:24,530 --> 00:17:30,670 u hekk issa, jekk I jagħmlu dan il-programm, jagħmlu scanf 2, dot slash scanf 2, 393 00:17:30,670 --> 00:17:35,386 u tip bonjour dinja, Daħħal, li time-- 394 00:17:35,386 --> 00:17:37,590 >> Hmm, dak li ġara? 395 00:17:37,590 --> 00:17:39,340 String jekk jogħġbok. 396 00:17:39,340 --> 00:17:41,430 What did I do wrong? 397 00:17:41,430 --> 00:17:43,800 Hello dinja, buffer. 398 00:17:43,800 --> 00:17:44,705 Hello dinja. 399 00:17:44,705 --> 00:17:48,201 400 00:17:48,201 --> 00:17:49,420 Ah, I know dak li qed jagħmel. 401 00:17:49,420 --> 00:17:49,920 KOLLOX SEW. 402 00:17:49,920 --> 00:17:51,628 Allura huwa qari sa l-ewwel ispazju. 403 00:17:51,628 --> 00:17:55,680 Mela ejja iqarrqu għal ftit mument u jgħidu I biss riedu xi ħaġa tip 404 00:17:55,680 --> 00:18:01,408 verament twila bħal din hija sentenza twila li l-waħda, tnejn, tlieta, erba ', ħames, 405 00:18:01,408 --> 00:18:04,420 sitt, seba ', tmien, disa', 10, 11, 12, 13, 14, 15, 16. 406 00:18:04,420 --> 00:18:05,300 KOLLOX SEW. 407 00:18:05,300 --> 00:18:07,600 Huwa tabilħaqq sentenza twila. 408 00:18:07,600 --> 00:18:10,710 Allura din is-sentenza hija itwal minn 16 karattru 409 00:18:10,710 --> 00:18:13,670 u għalhekk meta I hit Ikteb, x'inhu jiġri? 410 00:18:13,670 --> 00:18:16,940 Ukoll, f'dan il-każ tal- buffer istorja, I kien iddikjara 411 00:18:16,940 --> 00:18:22,190 li attwalment qed firxa ma '16 Chars lesta li tmur. 412 00:18:22,190 --> 00:18:27,426 Allura wieħed, tnejn, tlieta, erba ', ħames, sitt, seba ', tmien, disa', 10, 11, 12, 13, 14, 413 00:18:27,426 --> 00:18:29,440 15, 16. 414 00:18:29,440 --> 00:18:34,410 Allura 16 karattri, u issa, meta I jinqraw xi ħaġa bħal din hija twila 415 00:18:34,410 --> 00:18:43,950 sentenza, dak li jiġri huwa li jien ser jinqraw dan huwa twil 416 00:18:43,950 --> 00:18:49,660 S-E-N-T-E-N-C-E, sentenza. 417 00:18:49,660 --> 00:18:52,270 >> Allura dan huwa deliberatament ħaġa ħażina li I 418 00:18:52,270 --> 00:18:55,060 iżommu kitba lil hinn mill- konfini ta 'firxa tiegħi, 419 00:18:55,060 --> 00:18:56,660 lil hinn mill-konfini ta 'buffer tiegħi. 420 00:18:56,660 --> 00:19:00,100 I jistgħu jiksbu xortik tajba u l-programm ser iżżomm fuq tmexxija u ma 'kura, 421 00:19:00,100 --> 00:19:03,450 iżda ġeneralment, dan tabilħaqq se tiġrifa programm tiegħi, 422 00:19:03,450 --> 00:19:06,440 u huwa bug fil tiegħi kodiċi l-mument I pass 423 00:19:06,440 --> 00:19:08,576 lil hinn mill-konfini ta 'dak array, minħabba I 424 00:19:08,576 --> 00:19:10,450 ma nafx jekk huwa neċessarjament ser crash 425 00:19:10,450 --> 00:19:12,120 jew jekk jien biss se tikseb xxurtjati. 426 00:19:12,120 --> 00:19:15,750 Allura dan huwa problematiku għaliex F'dan il-każ, dan ma jidhirx li jaħdmu 427 00:19:15,750 --> 00:19:20,931 u ejja tentar destin hawn, anke jekk l IDE jidher li jittolleraw pjuttost ftit 428 00:19:20,931 --> 00:19:21,430 of-- 429 00:19:21,430 --> 00:19:22,040 >> Hemm immorru. 430 00:19:22,040 --> 00:19:23,240 Fl-aħħarnett. 431 00:19:23,240 --> 00:19:26,470 Hekk jien l-unika waħda li tista 'tara dan. 432 00:19:26,470 --> 00:19:29,630 So I biss kellhom ħafna gost ittajpjar out frażi attwali verament twila 433 00:19:29,630 --> 00:19:32,800 li ċertament qabżet 16 bytes, minħabba I 434 00:19:32,800 --> 00:19:38,050 ittajpjat f'dan multi-linja twila crazy frażi, u mbagħad avviż dak li ġara. 435 00:19:38,050 --> 00:19:41,110 Il-programm ppruvaw-istampar u mbagħad ltqajna tort segmentazzjoni 436 00:19:41,110 --> 00:19:44,430 u difetti segmentazzjoni huwa meta xi ħaġa bħal din jiġri 437 00:19:44,430 --> 00:19:47,650 u s-sistema operattiva jgħid Le, ma jistax imiss li l-memorja. 438 00:19:47,650 --> 00:19:49,570 Aħna qed tmur biex joqtlu il-programm għal kollox. 439 00:19:49,570 --> 00:19:51,180 >> Allura dan jidher problematiku. 440 00:19:51,180 --> 00:19:54,540 Stajt mtejba tal-programm li permezz tiegħu inqas ikollhom xi memorja, 441 00:19:54,540 --> 00:19:58,000 iżda dan jidher li tillimita l GetString funzjoni li jkollna 442 00:19:58,000 --> 00:20:00,780 spag ta 'xi tul finiti 16. 443 00:20:00,780 --> 00:20:04,200 Mela jekk inti tixtieq li tappoġġja itwal sentenzi minn 16 karattri, 444 00:20:04,200 --> 00:20:04,880 liema do you do? 445 00:20:04,880 --> 00:20:07,970 Well, inti tista 'żżid l- daqs ta 'dan buffer sa 32 446 00:20:07,970 --> 00:20:09,190 jew li jidher tip ta 'qasir. 447 00:20:09,190 --> 00:20:12,260 Għaliex ma aħna biss tagħmel huwa 1,000 iżda timbotta lura. 448 00:20:12,260 --> 00:20:17,100 X'hemm-rispons intuwittivament ta biss jevitaw din il-problema billi tagħmel 449 00:20:17,100 --> 00:20:20,660 buffer tiegħi akbar, bħal 1,000 Chars? 450 00:20:20,660 --> 00:20:23,470 Bl-implimentazzjoni GetString b'dan il-mod. 451 00:20:23,470 --> 00:20:27,130 X'hemm tajjeb jew ħażin hawn? 452 00:20:27,130 --> 00:20:28,033 Yeah? 453 00:20:28,033 --> 00:20:30,574 UDJENZA: Jekk inti torbot up a lott ta 'spazju u inti ma tużah, 454 00:20:30,574 --> 00:20:33,500 allura inti ma tistax talloka mill-ġdid dak l-ispazju. 455 00:20:33,500 --> 00:20:34,500 DAVID Malan: Assolutament. 456 00:20:34,500 --> 00:20:38,480 Huwa ħela b'tali mod li jekk inti ma attwalment ħtieġa 900 ta 'dawk bytes 457 00:20:38,480 --> 00:20:41,057 u għadhom inti qed tistaqsi għal 1000 b'kollox xorta, 458 00:20:41,057 --> 00:20:44,140 int biss jikkunsmaw memorja aktar fuq kompjuter l-utent milli għandek bżonn, 459 00:20:44,140 --> 00:20:45,740 u wara kollox, xi wħud inti stajt diġà ltaqgħu magħhom 460 00:20:45,740 --> 00:20:47,620 fil-ħajja li meta int running lottijiet ta 'programmi 461 00:20:47,620 --> 00:20:50,470 u dawn qed tiekol lottijiet ta 'memorja, dan jista 'attwalment jkollhom impatt prestazzjoni 462 00:20:50,470 --> 00:20:52,220 u l-esperjenza l-utent fuq il-kompjuter. 463 00:20:52,220 --> 00:20:56,090 Allura dak it-tip ta 'soluzzjoni għażżien, għall-żgur, u bil-maqlub, 464 00:20:56,090 --> 00:21:00,140 huwa mhux biss ħalja, liema problema xorta jibqa ', anke jekk nagħmel buffer tiegħi 465 00:21:00,140 --> 00:21:02,100 1000? 466 00:21:02,100 --> 00:21:02,600 Yeah? 467 00:21:02,600 --> 00:21:04,475 >> UDJENZA: Il-sekwenza huwa tul 1001. 468 00:21:04,475 --> 00:21:05,350 DAVID Malan: Eżattament. 469 00:21:05,350 --> 00:21:08,280 Jekk string tiegħek huwa t-tul 1001, inti għandek l-istess problema eżatt, 470 00:21:08,280 --> 00:21:10,705 u billi argument tiegħi, nixtieq biss imbagħad jagħmilha 2000, 471 00:21:10,705 --> 00:21:12,830 imma ma tafx fil quddiem kemm hu kbir għandu jkun, 472 00:21:12,830 --> 00:21:16,890 u għadhom, I do jkollhom biex jikkompilaw programm tiegħi qabel kiri nies jużaw u download 473 00:21:16,890 --> 00:21:17,390 it. 474 00:21:17,390 --> 00:21:21,490 Allura dan huwa eżattament it-tip ta ' Jittieħed li l jipprova librerija CS50 475 00:21:21,490 --> 00:21:24,750 biex tgħinna ma 'u aħna ser biss t'għajn lejn uħud mill-implimentazzjoni sottostanti 476 00:21:24,750 --> 00:21:29,790 hawn, iżda dan huwa CS50 dot C. Dan huwa l-fajl li kien fuq CS50 IDE 477 00:21:29,790 --> 00:21:31,420 dawn il-ġimgħat kollha li inti kont qed tuża. 478 00:21:31,420 --> 00:21:34,280 Huwa pre-ikkumpilata u inti stajt ilhom jużawha awtomatikament 479 00:21:34,280 --> 00:21:38,780 min-natura ta 'wara l- sing L-bandiera CS50 ma clang, 480 00:21:38,780 --> 00:21:42,300 imma jekk jien iscroll down kollha permezz ta ' dawn il-funzjonijiet, hawn GetString, 481 00:21:42,300 --> 00:21:44,636 u biss biex jagħtuk togħma ta 'x'inhu għaddej, 482 00:21:44,636 --> 00:21:46,760 ejja tagħti ħarsa lejn il-kumplessità relattiva. 483 00:21:46,760 --> 00:21:48,870 Mhuwiex super twil funzjoni, iżda aħna ma 484 00:21:48,870 --> 00:21:52,530 għandek biex jaħsbu iebes dwar kif għanddu jkollna kordi. 485 00:21:52,530 --> 00:21:55,660 >> Allura hawnhekk buffer tiegħi u I apparentement initialize lill null. 486 00:21:55,660 --> 00:21:57,990 Dan, naturalment, huwa l- istess ħaġa bħat star char, 487 00:21:57,990 --> 00:22:00,585 imma I iddeċieda fil implimentazzjoni tal-librerija CS50 488 00:22:00,585 --> 00:22:02,460 li jekk aħna qed tmur biex ikunu kompletament dinamiku, 489 00:22:02,460 --> 00:22:05,770 I do not know bil-quddiem kemm hu kbir ta ' utenti string se rridu nġibu. 490 00:22:05,770 --> 00:22:08,140 Hekk jien ser tibda mal biss string vojta 491 00:22:08,140 --> 00:22:11,507 u jien ser jibnu kemm memorja kif għandi bżonn biex jitwaħħal il-string utent 492 00:22:11,507 --> 00:22:13,340 u jekk jien ma jkollhom biżżejjed, jien ser jistaqsu 493 00:22:13,340 --> 00:22:15,010 is-sistema operattiva għall-memorja aktar. 494 00:22:15,010 --> 00:22:17,510 Jien ser jimxu string tagħhom fi blokki akbar ta 'memorja 495 00:22:17,510 --> 00:22:21,847 u jien ser jirrilaxxa jew ħielsa l blokki kbar biżżejjed ta 'memorja 496 00:22:21,847 --> 00:22:23,680 u aħna qed biss jmorru biex jagħmlu dan iteratively. 497 00:22:23,680 --> 00:22:25,570 >> Allura t'għajn malajr, here biss varjabbli 498 00:22:25,570 --> 00:22:28,780 li magħhom Jien ser iżżomm kont tal-kapaċità tal buffer tiegħi. 499 00:22:28,780 --> 00:22:30,071 Kemm bytes nista tajbin? 500 00:22:30,071 --> 00:22:32,070 Hawn n varjabbli li jien ser iżommu 501 00:22:32,070 --> 00:22:36,200 rekord ta 'kemm bytes huma attwalment l buffer jew li l-utent ikun ittajpjat. 502 00:22:36,200 --> 00:22:39,900 Jekk inti stajt ma bbenefikawx dan qabel, inti tista 'tispeċifika li varjabbli bħal int 503 00:22:39,900 --> 00:22:46,370 huwa mhux iffirmat, li kif tissuġġerixxi l-isem, ifisser li huwa mhux negattivi, u għaliex kieku 504 00:22:46,370 --> 00:22:50,590 I qatt trid li jolqot tispeċifika li int mhix sempliċement int, 505 00:22:50,590 --> 00:22:52,540 iżda huwa ta 'int mhux iffirmat? 506 00:22:52,540 --> 00:22:55,064 Huwa int mhux negattiv. 507 00:22:55,064 --> 00:22:56,355 X'tagħmel l-[inaudible] jfisser? 508 00:22:56,355 --> 00:22:58,910 >> UDJENZA: Huwa jiddeskrivi ammont ta 'memorja li tista' tkun [inaudible]. 509 00:22:58,910 --> 00:22:59,660 >> DAVID Malan: Yeah. 510 00:22:59,660 --> 00:23:03,710 Mela jekk jien ngħid mhux iffirmat, dan huwa attwalment giving you waħda daqsxejn ta 'memorja extra 511 00:23:03,710 --> 00:23:07,440 u jidher tip ta 'iblah, imma jekk inti jkollhom waħda daqsxejn ta 'memorja addizzjonali, li 512 00:23:07,440 --> 00:23:09,940 ifisser li inti għandek doppju Valuri inti tista jirrappreżentaw, 513 00:23:09,940 --> 00:23:11,570 għaliex jista 'jkun ta' 0 jew 1. 514 00:23:11,570 --> 00:23:14,660 Allura awtomatikament, l-int tista 'tkun bejn wieħed u ieħor negattiv 2 biljuni it-triq kollha 515 00:23:14,660 --> 00:23:16,030 sa pożittiv 2 biljuni. 516 00:23:16,030 --> 00:23:18,540 Dawk huma firxiet kbar, iżda huwa għadu tip ta 'ħela 517 00:23:18,540 --> 00:23:21,280 jekk inti biss jimpurtahom daqsijiet, li biss intuwittivament 518 00:23:21,280 --> 00:23:24,620 għandhom ikunu non-negattiv jew pożittiva jew 0, tajjeb allura, 519 00:23:24,620 --> 00:23:28,884 għaliex huma inti ħela 2 biljuni valuri possibbli għal numri negattivi 520 00:23:28,884 --> 00:23:30,300 jekk int qatt ser tuża minnhom? 521 00:23:30,300 --> 00:23:35,350 Allura billi qal mhux iffirmat, issa int tista tiegħi jkun bejn 0 u madwar 4 biljun. 522 00:23:35,350 --> 00:23:39,280 >> Allura hawnhekk biss int C għal raġunijiet aħna mhux se jsibu rwieħhom biss issa kif 523 00:23:39,280 --> 00:23:42,280 għaliex huwa ta 'int minflok ta 'char, iżda hawnhekk huwa 524 00:23:42,280 --> 00:23:44,630 l-gist ta 'dak li għaddej fuq, u xi wħud minnkom 525 00:23:44,630 --> 00:23:48,340 jista 'jkun bl-użu, per eżempju, il- funzjoni fgetc anki fil PSet erba 526 00:23:48,340 --> 00:23:51,580 jew wara, aħna ser tara għal darb'oħra fl problema stabbiliti ħamsa, 527 00:23:51,580 --> 00:23:55,410 fgetc huwa sbieħ għaliex l-isem tip ta ', tip ta' arcanely jissuġġerixxi, 528 00:23:55,410 --> 00:23:57,940 huwa funzjoni li gets karattru u għalhekk, 529 00:23:57,940 --> 00:24:00,690 x'hemm fundamentalment differenti dwar dak li aħna qed tagħmel fil GetString 530 00:24:00,690 --> 00:24:03,110 hija aħna ma tkunx qed tużah scanf bl-istess mod. 531 00:24:03,110 --> 00:24:07,550 Aħna biss creeping tul pass-pass fuq x'ikun l-utent ikun ittajpjat fil, 532 00:24:07,550 --> 00:24:10,970 għaliex nistgħu dejjem jalloka wieħed char, u għalhekk nistgħu dejjem sikur 533 00:24:10,970 --> 00:24:15,599 tħares lejn char wieħed fi żmien, u l-magic jibda jiġri hawn. 534 00:24:15,599 --> 00:24:17,890 Jien ser iscroll biex -nofs ta 'din il-funzjoni 535 00:24:17,890 --> 00:24:20,360 biss biex jintroduċi fil-qosor din il-funzjoni. 536 00:24:20,360 --> 00:24:22,670 Ħafna bħal hemm funzjoni malloc, hemm 537 00:24:22,670 --> 00:24:27,740 funzjoni realloc fejn realloc ihallik jirriallokaw blokki ta 'memorja 538 00:24:27,740 --> 00:24:29,570 u jagħmilha akbar jew iżgħar. 539 00:24:29,570 --> 00:24:33,060 Istorja sakemm qasir u ma mewġa ta 'naħa tiegħi għal-lum, 540 00:24:33,060 --> 00:24:35,620 jafu li dak li GetString qed tagħmel huwa huwa sort 541 00:24:35,620 --> 00:24:39,720 tal magically tkabbir jew jiċkienu l buffer kif l-utent 542 00:24:39,720 --> 00:24:41,440 tipi fil string tiegħu jew tagħha. 543 00:24:41,440 --> 00:24:43,962 >> Mela jekk it-tipi utent ta ' string qasir, dan il-kodiċi 544 00:24:43,962 --> 00:24:45,920 biss talloka biżżejjed memorja li jitwaħħal il-sekwenza. 545 00:24:45,920 --> 00:24:48,086 Jekk l-utent iżomm ittajpjar kif I ma kien għal darb'oħra u darb'oħra 546 00:24:48,086 --> 00:24:50,330 u għal darb'oħra, ukoll, jekk il- buffer inizjalment dan big 547 00:24:50,330 --> 00:24:53,310 u l-programm jirrealizza, li stenna minuta, jien l-ispazju, 548 00:24:53,310 --> 00:24:55,410 li għaddej biex tirdoppja id-daqs tal-buffer 549 00:24:55,410 --> 00:24:59,110 u mbagħad doppju tad-daqs tal-buffer u l-kodiċi li ma l-irduppjar, 550 00:24:59,110 --> 00:25:03,170 jekk inħarsu lejn din here, huwa biss dan għaqlija one-liner. 551 00:25:03,170 --> 00:25:06,830 Inti tista 'ma raw dan sintassi qabel, imma jekk inti tgħidli star ugwali, 552 00:25:06,830 --> 00:25:10,470 dan huwa l-istess ħaġa bħat qal drabi kapaċità 2. 553 00:25:10,470 --> 00:25:13,390 Allura hija biss iżomm irduppjar il-kapaċità tal-buffer 554 00:25:13,390 --> 00:25:17,480 u mbagħad javżak realloc li tagħti innifsu li l-memorja ħafna aktar. 555 00:25:17,480 --> 00:25:19,720 >> Issa, bħala twarrib, hemm huma funzjonijiet oħra fil hawn 556 00:25:19,720 --> 00:25:23,680 li aħna mhux se tħares lejn xi dettall minbarra li juru fil GetInt, 557 00:25:23,680 --> 00:25:26,150 nużaw GetString fil GetInt. 558 00:25:26,150 --> 00:25:28,192 Aħna tiċċekkja li mhuwiex null, li, irtirar, 559 00:25:28,192 --> 00:25:30,400 huwa l-valur speċjali li ifisser xi ħaġa li marret ħażin. 560 00:25:30,400 --> 00:25:31,233 Aħna tal-memorja. 561 00:25:31,233 --> 00:25:32,310 Aħjar tiċċekkja għal dan. 562 00:25:32,310 --> 00:25:33,710 U nerġgħu lura valur sentinella. 563 00:25:33,710 --> 00:25:37,850 Imma jien ser tiddifferixxi għall-kummenti dwar għaliex u mbagħad nużaw dan ku ta scanf 564 00:25:37,850 --> 00:25:42,100 imsejħa sscanf u jirriżulta li scanf sscanf, jew spag, 565 00:25:42,100 --> 00:25:45,310 ihallik tagħti ħarsa lejn il-linja li l-utent ikun ittajpjat fi u tavżak 566 00:25:45,310 --> 00:25:49,610 janalizzah essenzjalment u dak jien tagħmel hawnhekk huwa jien javżak sscanf, 567 00:25:49,610 --> 00:25:54,440 tanalizza ikun x'ikun l-utent għandu ttajpjata u kun żgur% i, 568 00:25:54,440 --> 00:25:59,250 hemm huwa integer fiha, u aħna mhux se jsibu rwieħhom illum eżattament għaliex hemm ukoll 569 00:25:59,250 --> 00:26:03,760 a% c hawn, iżda li fi ftit kliem jippermetti us biex tiskopri jekk l-utent ikun ittajpjat 570 00:26:03,760 --> 00:26:06,050 xi ħaġa fittizji wara n-numru. 571 00:26:06,050 --> 00:26:11,766 Allura r-raġuni li GetInt u GetString jgħidlek biex retry, retry, retry 572 00:26:11,766 --> 00:26:13,640 huwa minħabba kollha ta ' dan il-kodiċi konna bil-miktub, 573 00:26:13,640 --> 00:26:17,900 Huwa tip ta 'tħares lejn input-utent fit-teħid ċert li huwa kompletament numerika 574 00:26:17,900 --> 00:26:21,700 jew huwa ta 'floating attwali valur tal-punt jew bħalhom, 575 00:26:21,700 --> 00:26:24,233 jiddependi fuq liema valur funzjoni inti qed tuża. 576 00:26:24,233 --> 00:26:25,060 >> Whew. 577 00:26:25,060 --> 00:26:25,710 KOLLOX SEW. 578 00:26:25,710 --> 00:26:27,592 Dan kien f'gidma imma l-punt hawnhekk huwa 579 00:26:27,592 --> 00:26:29,550 li r-raġuni kellna dawk ir-roti ta 'taħriġ dwar 580 00:26:29,550 --> 00:26:32,880 huwa minħabba fl-inqas livell, hemm biss tant affarijiet li 581 00:26:32,880 --> 00:26:35,674 tista 'tmur ħażin li ridna li preemptively jimmaniġġaw 582 00:26:35,674 --> 00:26:38,090 dawk l-affarijiet ċertament fil- ġimgħat kmieni tal-klassi, 583 00:26:38,090 --> 00:26:42,230 iżda issa ma PSet erba 'u PSet ħames u lil hinn se tara li huwa aktar unto 584 00:26:42,230 --> 00:26:45,570 inti imma wkoll int aktar kapaċi biex jissolvew dawk tipi ta 'problemi 585 00:26:45,570 --> 00:26:47,180 yourself. 586 00:26:47,180 --> 00:26:51,770 Kwalunkwe mistoqsijiet dwar GetString jew GetInt? 587 00:26:51,770 --> 00:26:52,630 Yeah? 588 00:26:52,630 --> 00:26:55,130 >> UDJENZA: Għaliex kieku inti doppja il-kapaċità tal-buffer 589 00:26:55,130 --> 00:26:57,630 aktar milli biss tiżdied lilha mill-ammont eżatt? 590 00:26:57,630 --> 00:26:58,100 >> DAVID Malan: Tajba kwistjoni. 591 00:26:58,100 --> 00:27:00,474 Għaliex kieku aħna doppju tal-kapaċità tal-buffer għall-kuntrarju 592 00:27:00,474 --> 00:27:02,800 għal ftit tiżdied it billi xi valur kostanti? 593 00:27:02,800 --> 00:27:03,900 Kienet deċiżjoni disinn. 594 00:27:03,900 --> 00:27:08,590 Aħna biss iddeċieda li minħabba li hemm tendenza li jkun ftit għaljin għaqli time li jistaqsu 595 00:27:08,590 --> 00:27:10,440 is-sistema operattiva għall-memorja, aħna ma 596 00:27:10,440 --> 00:27:13,210 tixtieq li jispiċċaw jkollna fis sitwazzjoni ta 'sekwenzi kbar 597 00:27:13,210 --> 00:27:14,960 li konna tistaqsi l-OS ġdid u għal darb'oħra 598 00:27:14,960 --> 00:27:17,500 u għal darb'oħra u għal darb'oħra fl f'suċċessjoni rapida għall-memorja. 599 00:27:17,500 --> 00:27:20,387 Allura aħna biss iddeċieda, xi ftit arbitrarju iżda nisperaw raġonevolment, 600 00:27:20,387 --> 00:27:22,720 li, inti taf liema, ejja nipprova nikseb l quddiem ta 'ruħna 601 00:27:22,720 --> 00:27:25,520 u biss iżommu irduppjar hekk li aħna jimminimizzaw l-ammont ta 'drabi 602 00:27:25,520 --> 00:27:29,010 għandna sejħa malloc jew realloc, iżda sentenza total 603 00:27:29,010 --> 00:27:31,820 sejħa fin-nuqqas li wieħed ikun jaf liema utenti tista 'tixtieq li tip. 604 00:27:31,820 --> 00:27:33,600 Iż-żewġ modi jista 'jkun diskutibbli. 605 00:27:33,600 --> 00:27:35,430 Wieħed jista 'jargumenta tajba. 606 00:27:35,430 --> 00:27:39,240 >> Mela ejja tagħti ħarsa lejn koppja ta 'effetti sekondarji oħra ta' memorja, 607 00:27:39,240 --> 00:27:41,610 affarijiet li jistgħu imorru ħażin u għodod li inti tista 608 00:27:41,610 --> 00:27:43,880 jużaw biex jaqbdu dawn it-tipi ta 'żbalji. 609 00:27:43,880 --> 00:27:47,800 Jirriżulta lilkom kollha, anki jekk check50 ma qallek kemm, 610 00:27:47,800 --> 00:27:50,050 ġew miktub Buggy kodiċi peress ġimgħa, 611 00:27:50,050 --> 00:27:53,630 anki jekk it-testijiet kollha check50 huma għadda, u anki jekk inti u TF tiegħek 612 00:27:53,630 --> 00:27:56,010 huma super kunfidenti li kodiċi tiegħek taħdem kif maħsub. 613 00:27:56,010 --> 00:27:59,190 Kodiċi tiegħek ġie Buggy jew difettuż li kollha inti, 614 00:27:59,190 --> 00:28:02,540 fl-użu tal-librerija CS50, ġew jnixxu memorja. 615 00:28:02,540 --> 00:28:06,040 Inti kont qed tistaqsi s-sistema operattiva għall-memorja fil-maġġoranza tal-programmi 616 00:28:06,040 --> 00:28:08,850 inti stajt bil-miktub, iżda inti stajt fatt qatt ma taha lura. 617 00:28:08,850 --> 00:28:12,110 You ħadthom imsejħa GetString u GetInt u GetFloat, 618 00:28:12,110 --> 00:28:15,270 iżda ma GetString, inti ħadthom qatt imsejħa unGetString jew Agħti 619 00:28:15,270 --> 00:28:19,890 String Lura jew bħalhom, iżda Rajna li GetString ma jalloka memorja 620 00:28:19,890 --> 00:28:22,810 permezz ta 'malloc jew ta' dan realloc funzjoni, li huwa biss 621 00:28:22,810 --> 00:28:25,670 simili ħafna fl-ispirtu, u għadhom, aħna kont qed 622 00:28:25,670 --> 00:28:28,629 titlob lill-sistema operattiva għall memorja u l-memorja darb'oħra u għal darb'oħra 623 00:28:28,629 --> 00:28:29,670 iżda qatt ma jagħtu lura. 624 00:28:29,670 --> 00:28:33,550 >> Issa, bħala twarrib, jirriżulta li meta programm quits, kollha tal-memorja 625 00:28:33,550 --> 00:28:34,870 hija awtomatikament meħlus. 626 00:28:34,870 --> 00:28:36,150 Allura huwa ma kienx jittrattaw enormi. 627 00:28:36,150 --> 00:28:38,590 Mhuwiex ser jiksru l- IDE jew affarijiet jmajna, 628 00:28:38,590 --> 00:28:40,670 Imma meta programmi do ġeneralment nixxija memorja 629 00:28:40,670 --> 00:28:42,170 u dawn qed taħdem għal żmien twil. 630 00:28:42,170 --> 00:28:45,640 Jekk inti stajt qatt dehru l-ftit stupid bajja ballun fil Mac OS jew l-hourglass 631 00:28:45,640 --> 00:28:51,160 fuq Windows fejn huwa tip ta jonqos jew il-ħsieb jew ħsieb 632 00:28:51,160 --> 00:28:53,770 jew biss verament jibda li bil-mod għal jitkaxkru, 633 00:28:53,770 --> 00:28:56,960 possibbilment ħafna jista 'jkun ir-riżultat ta 'tnixxija memorja. 634 00:28:56,960 --> 00:28:59,970 Il-programmaturi li kiteb l-software inti qed tuża 635 00:28:59,970 --> 00:29:03,570 titlob lill-sistema operattiva għall-memorja kull ftit minuti, kull siegħa. 636 00:29:03,570 --> 00:29:05,570 Imma jekk int taħdem l- software, anki jekk huwa 637 00:29:05,570 --> 00:29:08,680 minimizzat fil-kompjuter tiegħek għal sigħat jew ġranet fuq il-għan, 638 00:29:08,680 --> 00:29:11,980 inti tista 'tistaqsi għal aktar u aktar memorja u qatt fil-fatt tużaha 639 00:29:11,980 --> 00:29:15,180 u għalhekk kodiċi tiegħek jista 'jkun, jew programmi jista 'jiġi jnixxu memorja, 640 00:29:15,180 --> 00:29:18,350 u jekk tibda tnixxi memorja, hemm memorja inqas għal programmi oħra, 641 00:29:18,350 --> 00:29:21,220 u l-effett huwa li bil-mod kollox stabbiliti. 642 00:29:21,220 --> 00:29:23,600 >> Issa, dan huwa bil-wisq wieħed mill l-programmi l-aktar atroċi 643 00:29:23,600 --> 00:29:26,350 ser ikollok opportunitajiet jiddekorri fil CS50 sakemm 644 00:29:26,350 --> 00:29:31,650 bħala l-produzzjoni tagħha huwa saħansitra aktar esoteric minn tal clang jew jagħmlu jew kwalunkwe tal-kmand 645 00:29:31,650 --> 00:29:35,930 programmi line konna run qabel imma Thankfully, integrati fil-produzzjoni tagħha 646 00:29:35,930 --> 00:29:39,810 huwa xi tips utli super li se jkun utli jew għall PSet erba 647 00:29:39,810 --> 00:29:41,510 jew ċertament PSet ħamsa. 648 00:29:41,510 --> 00:29:44,250 Allura valgrind hija għodda li jistgħu jintużaw biex tfittex 649 00:29:44,250 --> 00:29:46,930 għat-tnixxija memorja fil-programm tiegħek. 650 00:29:46,930 --> 00:29:48,570 Huwa relattivament sempliċi biex imexxu. 651 00:29:48,570 --> 00:29:51,420 Inti tmexxi valgrind u mbagħad, anke għalkemm huwa verbose ftit, 652 00:29:51,420 --> 00:29:54,440 sing check tnixxija sing ugwali sħiħa, u mbagħad dot 653 00:29:54,440 --> 00:29:56,320 slash u l-isem tal-programm tiegħek. 654 00:29:56,320 --> 00:30:00,010 Allura valgrind mbagħad jimxu program tiegħek u fl-aħħar nett tal-programm tiegħek 655 00:30:00,010 --> 00:30:02,240 running qabel quits u jagħtik ieħor fil-pront, 656 00:30:02,240 --> 00:30:04,980 li għaddej biex tanalizza tiegħek programm filwaqt li huwa kien għaddej 657 00:30:04,980 --> 00:30:07,740 u jgħidlek ma inti nixxija kwalunkwe memorja u aħjar għadhom, 658 00:30:07,740 --> 00:30:10,610 ma inti touch memorja li ma kienx jappartjeni lilek? 659 00:30:10,610 --> 00:30:13,700 Hija ma tistax qabda kollox, imma hija pjuttost tajba fil-qbid aktar affarijiet. 660 00:30:13,700 --> 00:30:19,700 >> Allura hawnhekk eżempju ta 'tiegħi li run dan il-programm, li tellgħu valgrind, 661 00:30:19,700 --> 00:30:21,470 fuq programm imsejjaħ memorja, u jien ser 662 00:30:21,470 --> 00:30:24,730 li tenfasizza l-linji li huma finalment ta 'interess għalina. 663 00:30:24,730 --> 00:30:27,690 Allura hemm anke aktar distrazzjonijiet li stajt mħassra mill-slide. 664 00:30:27,690 --> 00:30:30,930 Imma ejja biss tara dak li dan programm huwa kapaċi ta 'tgħidilna. 665 00:30:30,930 --> 00:30:34,800 Huwa kapaċi tgħidilna affarijiet bħal tikteb invalidu d-daqs 4. 666 00:30:34,800 --> 00:30:38,020 Fi kliem ieħor, jekk inti touch memorja, speċifikament 4 bytes ta 'memorja 667 00:30:38,020 --> 00:30:40,350 li m'għandekx ikollok, valgrind jista 'jgħidlek li. 668 00:30:40,350 --> 00:30:41,660 Tikteb Invalid-daqs 4. 669 00:30:41,660 --> 00:30:43,640 Inti mimsus erba 'bytes li m'għandekx ikollok. 670 00:30:43,640 --> 00:30:44,840 Fejn ma inti tagħmel dan? 671 00:30:44,840 --> 00:30:45,900 Dan huwa l-sbuħija. 672 00:30:45,900 --> 00:30:50,000 Linja c Memorja dot 21 huwa fejn inti invitat up u hu għalhekk huwa utli. 673 00:30:50,000 --> 00:30:53,410 Ferm simili GDB, dan jista 'jgħin punt inti fil-iżball attwali. 674 00:30:53,410 --> 00:30:57,170 >> Issa, dan wieħed huwa aktar ftit verbose, jew saħansitra konfużi. 675 00:30:57,170 --> 00:31:01,307 40 bytes fil 1 blokki huma definittivament mitlufa fir-rekord telf 1 ta '1. 676 00:31:01,307 --> 00:31:02,140 Xi tfisser? 677 00:31:02,140 --> 00:31:05,920 Ukoll, dan ifisser biss inti tlabt għal 40 bytes u int qatt ma taw lura. 678 00:31:05,920 --> 00:31:08,930 Inti imsejħa malloc jew inti imsejħa GetString u s-sistema operattiva 679 00:31:08,930 --> 00:31:12,450 ħadt 40 bytes, imma int qatt ma meħlusa jew rilaxxat li l-memorja, 680 00:31:12,450 --> 00:31:15,400 u li jkun ġust, aħna qatt ma stajt juru kif għandek tagħti lura memorja. 681 00:31:15,400 --> 00:31:17,910 Jinstabx hemm super funzjoni sempliċi imsejħa ħielsa. 682 00:31:17,910 --> 00:31:21,170 Jieħu argument wieħed, il-ħaġa inti tixtieq li ħielsa jew jagħtu lura, 683 00:31:21,170 --> 00:31:23,430 iżda 40 bytes, apparentement, f'dan il-programm 684 00:31:23,430 --> 00:31:27,300 intilfu fil-linja 20 ta 'memorja dot c. 685 00:31:27,300 --> 00:31:28,650 >> Mela ejja ara dan il-programm. 686 00:31:28,650 --> 00:31:31,020 Huwa super inutli. 687 00:31:31,020 --> 00:31:33,980 Hija turi biss dan l-iżball partikolari. 688 00:31:33,980 --> 00:31:34,920 Mela ejja tagħti ħarsa. 689 00:31:34,920 --> 00:31:39,920 Hawnhekk huwa ewlenin u ewlenin, avviż, sejħiet funzjoni msejħa f u mbagħad jirritornaha. 690 00:31:39,920 --> 00:31:41,550 Allura mhux kollha li interessanti. 691 00:31:41,550 --> 00:31:42,664 X'jagħmel f do? 692 00:31:42,664 --> 00:31:44,330 Avviż I ma jolqot bl prototip. 693 00:31:44,330 --> 00:31:46,520 I riedu jżommu l-kodiċi minimi kemm jista 'jkun. 694 00:31:46,520 --> 00:31:49,530 So I tpoġġi f 'hawn fuq prinċipali u li l-multa, ċertament, 695 00:31:49,530 --> 00:31:51,500 għal programmi qosra bħal dan. 696 00:31:51,500 --> 00:31:56,910 Allura f ma jerġax lura xejn u ma M'għandekx tieħu xejn, iżda ma tagħmel dan. 697 00:31:56,910 --> 00:31:59,620 Tiddikjara, ħafna bħal fl-eżempju Binky, 698 00:31:59,620 --> 00:32:02,682 a pointer imsejjaħ x li għaddej biex jaħżnu l-indirizz ta 'int. 699 00:32:02,682 --> 00:32:03,890 Allura dak in-naħa tax-xellug. 700 00:32:03,890 --> 00:32:07,230 Bl-Ingliż, liema huwa l- naħa tal-lemin tagħmel? 701 00:32:07,230 --> 00:32:09,770 Kulħadd? 702 00:32:09,770 --> 00:32:13,665 X'inhu dan tagħmel għalina? 703 00:32:13,665 --> 00:32:14,651 Yeah? 704 00:32:14,651 --> 00:32:16,623 >> UDJENZA: [inaudible] darbiet id-daqs ta 'int 705 00:32:16,623 --> 00:32:19,175 li huwa 10 darbiet li [inaudible] 706 00:32:19,175 --> 00:32:20,800 DAVID Malan: Tajba u let me tqassar. 707 00:32:20,800 --> 00:32:25,480 Allura jalloka biżżejjed spazju għal 10 interi jew 10, x'inhu l-daqs ta 'int, 708 00:32:25,480 --> 00:32:29,340 huwa l-erba 'bytes, hekk 10 darbiet 4 huwa 40, sabiex dik in-naħa tal-lemin li stajt 709 00:32:29,340 --> 00:32:33,930 enfasizzati huwa jagħti me 40 bytes u jaħżnu l-indirizz ta 'l-ewwel byte 710 00:32:33,930 --> 00:32:34,940 fis x. 711 00:32:34,940 --> 00:32:38,380 U issa fl-aħħar, u hawn fejn dan il-programm huwa Buggy, x'hemm 712 00:32:38,380 --> 00:32:41,540 ħażin bil-linja 21 ibbażata fuq li l-loġika? 713 00:32:41,540 --> 00:32:45,197 714 00:32:45,197 --> 00:32:46,280 X'hemm ħażin mal-linja 21? 715 00:32:46,280 --> 00:32:46,780 Yeah? 716 00:32:46,780 --> 00:32:49,550 UDJENZA: Inti ma tistax Indiċi fis x [inaudible]. 717 00:32:49,550 --> 00:32:50,300 DAVID Malan: Yeah. 718 00:32:50,300 --> 00:32:52,270 I m'għandhomx indiċi fi x bħal dik. 719 00:32:52,270 --> 00:32:53,850 Allura b'mod sintattiku, li OK. 720 00:32:53,850 --> 00:32:56,990 X'hemm sbieħ huwa, ferm simili inti jista 'jikkura l-isem ta' firxa 721 00:32:56,990 --> 00:33:01,080 bħallikieku huwa pointer, b'mod simili inti tista jittrattaw pointer bħallikieku huwa 722 00:33:01,080 --> 00:33:06,425 firxa, u so I tista sintattikament ngħid xi ħaġa x parentesi, x parentesi i, 723 00:33:06,425 --> 00:33:07,800 iżda l-10 hija problematika. 724 00:33:07,800 --> 00:33:09,096 Għaliex? 725 00:33:09,096 --> 00:33:10,910 >> UDJENZA: Għaliex dan huwa mhux ġewwa. 726 00:33:10,910 --> 00:33:12,390 >> DAVID Malan: Mhuwiex ġewwa li blokki ta 'memorja. 727 00:33:12,390 --> 00:33:15,306 X'hemm l-akbar valur I għandhom tkun tqegħid f'dawk parentesi kwadri? 728 00:33:15,306 --> 00:33:16,870 9, 0 sa 9. 729 00:33:16,870 --> 00:33:18,160 Minħabba indiċjar żero. 730 00:33:18,160 --> 00:33:20,190 Allura 0 sa 9 tkun multa. 731 00:33:20,190 --> 00:33:23,960 Bracket 10 mhix tajba u iżda, tfakkar għalkemm, kull darba 732 00:33:23,960 --> 00:33:27,017 I jidhru li jippruvaw jagħmlu CS50 IDE tiġrifa billi tittajpja valuri fittizji, 733 00:33:27,017 --> 00:33:29,100 dan mhux dejjem jikkooperaw, u fil-fatt, inti spiss 734 00:33:29,100 --> 00:33:31,460 jiksbu xxurtjati biss minħabba l- sistema operattiva ma 735 00:33:31,460 --> 00:33:35,467 avviż li inti dejjem hekk ftit jgħaddu xi blokki ta 'memorja, 736 00:33:35,467 --> 00:33:38,300 għaliex inti qagħdu fi ħdan teknikament segment tiegħek, iżda aktar fuq li 737 00:33:38,300 --> 00:33:40,940 fi klassi sistemi operattivi, u għalhekk xi ħaġa bħal din 738 00:33:40,940 --> 00:33:43,000 tista 'faċilment tmur jinstabux. 739 00:33:43,000 --> 00:33:48,120 Program tiegħek qatt se crash b'mod konsistenti imma forsi darba awhile. 740 00:33:48,120 --> 00:33:50,610 >> U hekk ejja jippruvaw valgrind fuq dan, u hawnhekk 741 00:33:50,610 --> 00:33:52,870 fejn aħna ser tingħata megħlub mill-output mumentarjament. 742 00:33:52,870 --> 00:34:00,810 Sabiex tagħmel memorja nixxija valgrind check ugwali memorja sħiħa dot slash. 743 00:34:00,810 --> 00:34:03,040 U hawnhekk għaliex I wegħda dan jisbqu. 744 00:34:03,040 --> 00:34:05,700 Hawn dak valgrind, hawn hu dak programmer, xi snin ago- 745 00:34:05,700 --> 00:34:08,469 iddeċieda li tkun idea tajba għal ħruġ biex look like. 746 00:34:08,469 --> 00:34:09,750 Mela ejja jagħmlu sens ta 'dan. 747 00:34:09,750 --> 00:34:13,120 Allura-triq kollha fuq il-naħa tax-xellug naħa għall-ebda raġuni tajba 748 00:34:13,120 --> 00:34:16,620 huwa l-ID proċess tal-programm aħna biss run, l-identifikatur uniku 749 00:34:16,620 --> 00:34:18,030 għall-programm aħna biss dam. 750 00:34:18,030 --> 00:34:19,738 Aħna imħassar li mill l-slide, iżda hemm 751 00:34:19,738 --> 00:34:22,190 xi informazzjoni utli hawn. 752 00:34:22,190 --> 00:34:24,684 >> Ejja iscroll sal-quċċata ħafna. 753 00:34:24,684 --> 00:34:25,600 Hawn fejn bdejna. 754 00:34:25,600 --> 00:34:27,040 Allura huwa mhux kollha li ħafna output. 755 00:34:27,040 --> 00:34:30,429 Hawn dak write invalidi daqs 4 dwar linja 21. 756 00:34:30,429 --> 00:34:31,760 Well, dak li kien line 21? 757 00:34:31,760 --> 00:34:34,500 Linja 21 kien eżattament dan u jagħmel sens 758 00:34:34,500 --> 00:34:37,290 li jien fil validament miktub 4 bytes għaliex jien 759 00:34:37,290 --> 00:34:40,389 jippruvaw joħolqu dan numru sħiħ, li jista 'jvarja, 760 00:34:40,389 --> 00:34:42,370 hija biss jiġri li jkun żero, imma jien jippruvaw 761 00:34:42,370 --> 00:34:44,940 li tqiegħed lilha f'lok li ma jappartjenix lili. 762 00:34:44,940 --> 00:34:50,900 Barra minn hekk, l hawn, 40 bytes f'wieħed blokok huma definittivament mitlufa fir-rekord 1. 763 00:34:50,900 --> 00:34:56,500 Dak għax meta I call malloc hawn, jien qatt ma attwalment ħielsa l-memorja. 764 00:34:56,500 --> 00:34:58,140 >> Allura kif nistgħu jiffissaw dan? 765 00:34:58,140 --> 00:35:02,970 Let me imorru quddiem u tkun ftit aktar sikuri u jagħmlu 9 hemmhekk u let me hawn b'xejn x. 766 00:35:02,970 --> 00:35:04,820 Dan huwa l-funzjoni l-ġdida għal-lum. 767 00:35:04,820 --> 00:35:11,520 Jekk I issa terġa 'tagħmel memorja dot mmejla, ejja jimxu valgrind fuq mill-ġdid, 768 00:35:11,520 --> 00:35:14,990 timmassimizza tieqa tiegħi u hit Ikteb. 769 00:35:14,990 --> 00:35:16,900 Issa, dan huwa tajjeb. 770 00:35:16,900 --> 00:35:19,590 Huma midfuna l-aħbar tajba fil kollha ta 'dan l-output. 771 00:35:19,590 --> 00:35:20,810 Blokki kollha munzell kienu ħielsa. 772 00:35:20,810 --> 00:35:23,604 Aħna ser terga 'lura għal dak il-borġ huwa, iżda l-ebda tnixxijiet huma possibbli. 773 00:35:23,604 --> 00:35:25,520 Allura dan huwa biss ieħor għodda għall kit għodda tiegħek 774 00:35:25,520 --> 00:35:30,220 li magħhom inti tista 'tibda biex isibu issa żbalji bħal dik. 775 00:35:30,220 --> 00:35:34,532 >> Imma ejja ara dak aktar tista 'tmur ħażin hawn. 776 00:35:34,532 --> 00:35:38,890 Ejja tranżizzjoni issa biex attwalment jsolvu problema. 777 00:35:38,890 --> 00:35:42,440 Bħala twarrib, jekk dan se jeħles Ftit ftit ta 'konfużjoni jew ta' tensjoni, 778 00:35:42,440 --> 00:35:43,430 dan huwa issa umoristiċi. 779 00:35:43,430 --> 00:35:46,400 780 00:35:46,400 --> 00:35:46,900 Yeah. 781 00:35:46,900 --> 00:35:49,040 Li pjuttost tajba. 782 00:35:49,040 --> 00:35:50,890 Minħabba pointers huma indirizzi u indirizzi 783 00:35:50,890 --> 00:35:53,098 huma ġeneralment permezz tal-konvenzjoni miktub bil hexadeċimali. 784 00:35:53,098 --> 00:35:54,650 Ha, ha, dan huwa umoristiċi issa. 785 00:35:54,650 --> 00:35:58,390 Xorta, so ejja issa attwalment issolvi problema. 786 00:35:58,390 --> 00:36:00,840 Dan kien super, super-livell baxx s'issa, 787 00:36:00,840 --> 00:36:03,950 u aħna jistgħu attwalment jagħmlu utli affarijiet ma dawn id-dettalji ta 'livell baxx. 788 00:36:03,950 --> 00:36:06,710 >> Allura aħna introdotti ftit ġimgħat ilu l-kunċett ta 'firxa. 789 00:36:06,710 --> 00:36:09,177 Firxa kien sbieħ għaliex huwa diffiċli biex tnaddaf kodiċi tagħna 790 00:36:09,177 --> 00:36:11,760 għaliex jekk ridna li jiktbu programm ma 'studenti multipli 791 00:36:11,760 --> 00:36:15,270 jew ismijiet multipli u djar u dorms u kulleġġi u kollha ta 'dak, 792 00:36:15,270 --> 00:36:19,430 nistgħu jaħżen kollox aktar pulit ġewwa ta 'firxa. 793 00:36:19,430 --> 00:36:23,039 Iżda tipproponi tnaqqis wieħed ta 'firxa s'issa. 794 00:36:23,039 --> 00:36:26,080 Anke jekk inti stajt ma sofra it yourself fi programm, just istintivament, 795 00:36:26,080 --> 00:36:30,870 dak li huwa ħaġa ħażina dwar firxa, forsi? 796 00:36:30,870 --> 00:36:32,337 Nisma xi murmurs. 797 00:36:32,337 --> 00:36:34,170 UDJENZA: Huwa diffiċli Tibdilx id-daqs. 798 00:36:34,170 --> 00:36:36,128 DAVID Malan: Huwa diffiċli Tibdilx id-daqs. 799 00:36:36,128 --> 00:36:38,660 Inti ma tistax tbiddel id-daqs ta 'firxa, fil-fatt, per se 800 00:36:38,660 --> 00:36:43,040 fil C. Tista 'jalloka firxa ieħor, jimxu kollox mill-qadima 801 00:36:43,040 --> 00:36:45,380 fil-ġdida, u issa għandhom xi spazju żejjed, 802 00:36:45,380 --> 00:36:47,469 iżda mhuwiex simili għal lingwa bħal Java jew Python 803 00:36:47,469 --> 00:36:49,760 jew kwalunkwe numru ta 'ieħor lingwi li magħhom xi wħud minnkom 804 00:36:49,760 --> 00:36:52,070 jista 'jkun familjari fejn inti tista 'sempliċement ikompli jżid affarijiet 805 00:36:52,070 --> 00:36:53,930 ad nauseam sa l-aħħar ta 'firxa. 806 00:36:53,930 --> 00:36:57,880 Meta inti għandek firxa ta ' daqs 6, li huwa d-daqs tagħha, 807 00:36:57,880 --> 00:37:01,970 u għalhekk ħafna bħall-idea ta 'qabel li jkollhom buffer ta 'ċertu daqs, 808 00:37:01,970 --> 00:37:05,940 inti għandek raden barra tal-bieb liema daqs tridu li tkun? 809 00:37:05,940 --> 00:37:07,880 Jekk inti raden kbira wisq, int ħela ispazju. 810 00:37:07,880 --> 00:37:10,950 Jekk inti raden żgħir wisq, inti ma jista 'jaħżen dik id-data, għall-inqas 811 00:37:10,950 --> 00:37:12,940 mingħajr ħafna aktar xogħol. 812 00:37:12,940 --> 00:37:18,180 >> Hekk illum, grazzi għall pointers, nistgħu tibda legatura flimkien custom tagħna stess 813 00:37:18,180 --> 00:37:20,989 strutturi ta 'dejta, u b'mod fatt, hawnhekk hija xi ħaġa 814 00:37:20,989 --> 00:37:23,030 li jistenna ftit aktar cryptic ewwel daqqa t'għajn, 815 00:37:23,030 --> 00:37:26,440 iżda dan huwa dak li aħna ser sejħa marbuta lista, u l-isem tip ta 'tiġbor fil-qosor tagħha 816 00:37:26,440 --> 00:37:26,940 it. 817 00:37:26,940 --> 00:37:29,550 Huwa lista ta 'numri, jew F'dan il-każ, lista ta 'numri, 818 00:37:29,550 --> 00:37:33,480 iżda tista 'tkun lista ta' xejn, imma huwa marbut flimkien permezz ta 'vleġeġ, 819 00:37:33,480 --> 00:37:36,380 u ħu raden ma 'dak it-teknika 820 00:37:36,380 --> 00:37:38,310 aħna ser tkun tista stitch flimkien, 821 00:37:38,310 --> 00:37:42,540 tip simili popcorn b'ħajta, a marbut listi rettangoli hawn? 822 00:37:42,540 --> 00:37:43,936 Numri tagħha? 823 00:37:43,936 --> 00:37:45,560 X'hemm-karatteristika lingwa sottostanti? 824 00:37:45,560 --> 00:37:46,350 >> UDJENZA: A pointer. 825 00:37:46,350 --> 00:37:47,308 >> DAVID Malan: A pointer. 826 00:37:47,308 --> 00:37:51,700 Allura kull wieħed minn dawn vleġeġ hawn tirrappreżenta pointer jew eżatt indirizz. 827 00:37:51,700 --> 00:37:54,590 Allura fi kliem ieħor, jekk irrid li jaħżen lista ta 'numri, 828 00:37:54,590 --> 00:37:59,040 I tista 'mhux biss jaħżnu jekk irrid l-abbiltà li jikbru u tiċkien 829 00:37:59,040 --> 00:38:00,990 istruttura tad-data tiegħi fil-firxa. 830 00:38:00,990 --> 00:38:03,000 So I jeħtieġ li jkollhom ftit aktar sofistikazzjoni, 831 00:38:03,000 --> 00:38:05,720 iżda tinnota li din stampa tip ta jissuġġerixxi 832 00:38:05,720 --> 00:38:08,650 li jekk inti stajt biss ltqajna ftit ħjut konnessjoni kollox flimkien, 833 00:38:08,650 --> 00:38:13,100 probabbilment mhuwiex diffiċli li tagħmel spazju bejn tnejn minn dawk rettangoli 834 00:38:13,100 --> 00:38:16,750 jew tnejn ta'dawk il-lymph, kif aħna ser tibda titlob minnhom, titpoġġa fi node ġdid, 835 00:38:16,750 --> 00:38:19,547 u mbagħad ma 'xi thread ġdida, biss foss-tliet lymph flimkien, 836 00:38:19,547 --> 00:38:22,880 l-ewwel waħda, l-aħħar waħda, u l-wieħed li inti biss tiddaħħal fin-nofs. 837 00:38:22,880 --> 00:38:26,000 >> U fil-fatt lista marbuta, b'differenza firxa, huwa dinamiku. 838 00:38:26,000 --> 00:38:27,840 Hija tista 'tikber u li tista tiċkien u inti ma 839 00:38:27,840 --> 00:38:32,434 għandek tkun taf jew kura minn qabel kemm data kemm int ser tkun ħażna, 840 00:38:32,434 --> 00:38:35,600 iżda jirriżulta irridu nkunu ftit attenti dwar kif jimplimentaw din. 841 00:38:35,600 --> 00:38:39,070 Allura l-ewwel ejja tikkunsidra kif nimplimentaw waħda minn dawn rettangoli ftit. 842 00:38:39,070 --> 00:38:40,690 Huwa faċli li jimplimentaw int. 843 00:38:40,690 --> 00:38:44,000 Inti biss jgħidu int nu mbagħad ikollok 4 bytes għal int, 844 00:38:44,000 --> 00:38:49,089 imma kif nista 'nikseb xi int, sejħa hija n, u mbagħad pointer, ejja sejħa hija li jmiss. 845 00:38:49,089 --> 00:38:50,880 Nistgħu sejħa dawn affarijiet xejn irridu 846 00:38:50,880 --> 00:38:53,590 iżda għandu bżonn struttura data tad-dwana. 847 00:38:53,590 --> 00:38:54,257 Yeah? 848 00:38:54,257 --> 00:38:57,020 >> UDJENZA: ampersand [inaudible]. 849 00:38:57,020 --> 00:39:00,940 >> DAVID Malan: Allura ampersand aħna se jużaw biex jiksbu l-indirizz ta 'nodu potenzjalment. 850 00:39:00,940 --> 00:39:02,740 Iżda għandna bżonn ieħor karatteristika ta 'C sabiex 851 00:39:02,740 --> 00:39:06,700 li tagħti me l-kapaċità li joħolqu dan ir-rettangolu tad-dwana, dan il-użanza 852 00:39:06,700 --> 00:39:08,919 varjabbli jekk inti se, fil-memorja. 853 00:39:08,919 --> 00:39:09,710 UDJENZA: A Istituzzjonjijiet. 854 00:39:09,710 --> 00:39:10,626 DAVID Malan: A Istituzzjonjijiet. 855 00:39:10,626 --> 00:39:14,310 Recall mill-aħħar ġimgħa, daħħalna Struct, dan il-keyword relattivament sempliċi 856 00:39:14,310 --> 00:39:16,254 li tikri us jagħmlu affarijiet bħal dan. 857 00:39:16,254 --> 00:39:18,420 C ma jiġu mal-data istruttura imsejħa student. 858 00:39:18,420 --> 00:39:22,190 Jidħol ma int u float u char u tali, iżda dan ma jaqax ma 'student, 859 00:39:22,190 --> 00:39:26,750 iżda nistgħu noħolqu tip ta 'data student, struttura student, ma 'dan sintassi 860 00:39:26,750 --> 00:39:27,250 hawn. 861 00:39:27,250 --> 00:39:28,350 U tkun taf tara dan għal darb'oħra u darb'oħra. 862 00:39:28,350 --> 00:39:30,426 Allura ma joqogħdu jinkwetaw dwar memorizing l-keywords, 863 00:39:30,426 --> 00:39:33,300 iżda l-keyword li l-importanti huwa biss il-fatt li għidna Istituzzjonjijiet 864 00:39:33,300 --> 00:39:37,590 u allura aħna hija imsejħa student u ġewwa tal-istudent kien l-isem u dar 865 00:39:37,590 --> 00:39:39,390 jew dorm jew bħalhom. 866 00:39:39,390 --> 00:39:41,980 >> U hekk issa llum, ejja tipproponi dan. 867 00:39:41,980 --> 00:39:45,240 Stajt miżjud ftit kliem, imma jekk irrid biex jimplimentaw dan ir-rettangolu li l- 868 00:39:45,240 --> 00:39:48,440 ltqajna kemm int u pointer, inti taf liema, jien 869 00:39:48,440 --> 00:39:51,540 ser tiddikjara Struct imsejjaħ node. 870 00:39:51,540 --> 00:39:55,630 Jien ukoll, ġewwa ta 'dan, ser tg li node, dan ir-rettangolu, għandha int 871 00:39:55,630 --> 00:39:59,730 u aħna ser sejħa hija nu hija għandha pointer li jmiss. 872 00:39:59,730 --> 00:40:02,540 U dan huwa xi ftit verbose, imma jekk inti taħseb dwarha, 873 00:40:02,540 --> 00:40:07,300 l-vleġeġ li kienu fl-istampa mument ilu huma ta 'liema tip ta' dejta? 874 00:40:07,300 --> 00:40:12,330 Jekk dawn il-vleġeġ qiegħda tipponta liema tip ta 'struttura data? 875 00:40:12,330 --> 00:40:14,332 Huwa mhux biss tipponta lejn int per se. 876 00:40:14,332 --> 00:40:16,165 Huwa tipponta lejn il- ħaġa rettangolari sħiħa 877 00:40:16,165 --> 00:40:18,720 u li ħaġa rettangolari, għidna, huwa msejjaħ node. 878 00:40:18,720 --> 00:40:21,720 U hekk aħna tip ta 'għandekx recursively jiddefinixxu tali dan 879 00:40:21,720 --> 00:40:26,270 li node, aħna għandu ngħidu, se jkun fiha int imsejħa n 880 00:40:26,270 --> 00:40:31,070 u pointer imsejjaħ jmiss u l- tip ta 'struttura data li għaliha 881 00:40:31,070 --> 00:40:35,770 li punti ta pointer hija apparentement se tkun node Struct. 882 00:40:35,770 --> 00:40:41,550 >> Allura dan huwa annoyingly verbose u biss sabiex ikunu pedantic, 883 00:40:41,550 --> 00:40:44,100 r-raġuni għaliex ma nistgħux biss jgħidu dan, li franchement 884 00:40:44,100 --> 00:40:46,860 jistenna ħafna aktar leġġibbli, huwa minħabba irtirar li C taqra 885 00:40:46,860 --> 00:40:48,710 affarijiet fuq għal isfel, xellug għal-lemin. 886 00:40:48,710 --> 00:40:54,120 Mhuwiex sakemm aħna jiksbu l-virgola li l-node keyword fil-fatt teżisti. 887 00:40:54,120 --> 00:40:57,980 Mela jekk irridu li jkollna dan it-tip ta ' referenza ċiklika ġewwa tad-data 888 00:40:57,980 --> 00:41:02,120 istruttura, għandna nagħmlu dan, fejn ngħidu node Struct fil-quċċata, li 889 00:41:02,120 --> 00:41:06,770 tagħtina mod itwal ta 'jiddeskrivi dan ħaġa, allura ġewwa ngħidu node Struct, 890 00:41:06,770 --> 00:41:09,560 u mbagħad fl-aħħar linja ngħidu, id-dritt, C, mill-mod, 891 00:41:09,560 --> 00:41:12,060 biss sejħa dan kkritikat kollu ħaġa node u stop 892 00:41:12,060 --> 00:41:14,360 użu tal-Struct keyword għal kollox. 893 00:41:14,360 --> 00:41:18,030 Allura dan huwa biss tip ta 'sintattiku trick li finalment tikri us joħolqu 894 00:41:18,030 --> 00:41:21,370 xi ħaġa li jidher eżattament bħal dan. 895 00:41:21,370 --> 00:41:25,010 >> Mela jekk nassumu issa nistgħu jimplimentaw dan ħaġa fis-C, 896 00:41:25,010 --> 00:41:28,040 kif do we attwalment tibda jaqsmu dan? 897 00:41:28,040 --> 00:41:32,360 Ukoll, fil-fatt, kollha għandna tagħmel hu jtenni mix-xellug għal-lemin u biss 898 00:41:32,360 --> 00:41:35,960 tip ta 'daħħal lymph nodes jew iħassar jew tfittxija għal affarijiet fejn irridu, 899 00:41:35,960 --> 00:41:39,560 iżda biex isir dan, ejja imorru quddiem u jagħmlu affarijiet ftit aktar reali għaliex dan 900 00:41:39,560 --> 00:41:42,560 kien super-livell baxx s'issa. 901 00:41:42,560 --> 00:41:45,700 Kieku xi ħadd litteralment tixtieq li tkun l-ewwel? 902 00:41:45,700 --> 00:41:46,200 KOLLOX SEW. 903 00:41:46,200 --> 00:41:47,092 Come fuq up. 904 00:41:47,092 --> 00:41:47,800 X'hemm isem tiegħek? 905 00:41:47,800 --> 00:41:48,499 >> DAVID: David. 906 00:41:48,499 --> 00:41:49,290 DAVID Malan: David. 907 00:41:49,290 --> 00:41:49,998 Għandi pjaċir. 908 00:41:49,998 --> 00:41:50,960 Me wisq. 909 00:41:50,960 --> 00:41:52,450 Kull dritt. 910 00:41:52,450 --> 00:41:53,990 U għandna bżonn numru 9. 911 00:41:53,990 --> 00:41:55,240 Mhux tajbin daqs l-ewwel, forsi. 912 00:41:55,240 --> 00:41:56,430 OK, numru 9. 913 00:41:56,430 --> 00:41:59,667 A numru 17, jekk jogħġbok. 914 00:41:59,667 --> 00:42:01,000 Let me jmorru lura ftit farther. 915 00:42:01,000 --> 00:42:03,980 Numru 22, jekk jogħġbok, u kif madwar farther lura 916 00:42:03,980 --> 00:42:06,344 jekk I tista 'tara l-ebda idejn ma 'l-dawl jew l-ebda. 917 00:42:06,344 --> 00:42:08,010 Xi ħadd l-jiġu volontarju hemm dritt. 918 00:42:08,010 --> 00:42:08,968 Do inti tixtieq li toħroġ? 919 00:42:08,968 --> 00:42:10,450 Driegħ tiegħek sfurzat jogħla. 920 00:42:10,450 --> 00:42:12,340 OK, 17. 921 00:42:12,340 --> 00:42:13,690 22. 922 00:42:13,690 --> 00:42:15,120 26 huwa jinżlu. 923 00:42:15,120 --> 00:42:18,450 Would xi ħadd ieħor simili li forcefully-- Come on up. 924 00:42:18,450 --> 00:42:21,030 Voluntier attwali. 925 00:42:21,030 --> 00:42:23,330 >> Allura malajr ħafna, jekk inti guys tista 'tirranġa 926 00:42:23,330 --> 00:42:26,550 yourselves bħad il-lymph fuq l-iskrin. 927 00:42:26,550 --> 00:42:27,510 Grazzi. 928 00:42:27,510 --> 00:42:29,234 U tkun taf tkun 26. 929 00:42:29,234 --> 00:42:30,650 Introduzzjonijiet kollha dritt u ta 'malajr. 930 00:42:30,650 --> 00:42:32,139 Hekk jien David u inti wkoll? 931 00:42:32,139 --> 00:42:32,680 DAVID: David. 932 00:42:32,680 --> 00:42:33,721 DAVID Malan: U int? 933 00:42:33,721 --> 00:42:34,229 Jake: Jake. 934 00:42:34,229 --> 00:42:34,729 SUE: Sue. 935 00:42:34,729 --> 00:42:35,229 ALEX: Alex. 936 00:42:35,229 --> 00:42:36,475 RAPHAEL: Raphael. 937 00:42:36,475 --> 00:42:37,100 TAYLOR: Taylor. 938 00:42:37,100 --> 00:42:37,466 DAVID Malan: Taylor. 939 00:42:37,466 --> 00:42:37,590 Eċċellenti. 940 00:42:37,590 --> 00:42:39,810 Allura dawn huma voluntiera tagħna għal-lum u jimxi 'l quddiem 941 00:42:39,810 --> 00:42:43,090 u l-bidla ftit il-mod, u biss jimxi 'l quddiem u jżomm 942 00:42:43,090 --> 00:42:47,024 azjenda numri tiegħek kif int jew tiegħek ewwel sinjal u l-użu tax-xellug tiegħek, 943 00:42:47,024 --> 00:42:48,940 imorru quddiem u biss jimplimentaw dawn vleġeġ, biss 944 00:42:48,940 --> 00:42:51,360 sabiex naħa tax-xellug tiegħek huwa litteralment tipponta lejn kwalunkwe inti għandu punt 945 00:42:51,360 --> 00:42:54,610 lejn, u tagħti lilek innifsek xi kamra b'tali mod li nistgħu viżwalment tara idejk attwalment 946 00:42:54,610 --> 00:42:58,120 tipponta, u inti tista 'biss il-punt tip ta 'mill-art huwa multa. 947 00:42:58,120 --> 00:43:03,040 >> Allura hawnhekk għandna lista marbuta ta 'wieħed, tnejn, tlieta, erba ', ħames lymph inizjalment, 948 00:43:03,040 --> 00:43:05,860 u avviż għandna dan speċjali pointer fil-bidu li l- 949 00:43:05,860 --> 00:43:09,770 ċavetta għaliex għandna biex iżommu kont tal-lista tul kollu b'xi. 950 00:43:09,770 --> 00:43:13,590 Dawn guys, anki jekk dawn qed xellug għal-lemin, lura lura fil-memorja, 951 00:43:13,590 --> 00:43:15,950 huma jkunu effettivament jistgħu jkunu kullimkien fil-memorja tal-kompjuter. 952 00:43:15,950 --> 00:43:18,240 Allura dawn guys tista 'tkun wieqfa kullimkien fuq l-istadju 953 00:43:18,240 --> 00:43:20,960 u li l-multa, sakemm dawn qed fatt li tipponta lejn xulxin, 954 00:43:20,960 --> 00:43:22,770 iżda li żżomm affarijiet nadif u sempliċi, aħna ser 955 00:43:22,770 --> 00:43:25,728 biss tiġbed minnhom xellug għal-lemin simili dan, imma jista 'jkun hemm lakuni kbar 956 00:43:25,728 --> 00:43:26,790 bejniethom ta'dawk il-lymph. 957 00:43:26,790 --> 00:43:30,710 >> Issa, jekk irrid li attwalment daħħal xi valur il-ġdid, ejja imorru quddiem u tagħmel dan. 958 00:43:30,710 --> 00:43:33,720 Għandna l-opportunità issa li jagħżlu node ieħor. 959 00:43:33,720 --> 00:43:39,820 Say ejja tibda bl mallocing 55. 960 00:43:39,820 --> 00:43:41,320 Would xi ħadd f'moħħu jkunu malloc? 961 00:43:41,320 --> 00:43:42,280 OK, jaqgħu fuq up. 962 00:43:42,280 --> 00:43:42,992 X'hemm isem tiegħek? 963 00:43:42,992 --> 00:43:43,700 RAINBOW: Rainbow. 964 00:43:43,700 --> 00:43:44,050 DAVID Malan: Rainbow? 965 00:43:44,050 --> 00:43:44,810 Kull dritt. 966 00:43:44,810 --> 00:43:46,600 Malloc Rainbow. 967 00:43:46,600 --> 00:43:47,450 Come fuq up. 968 00:43:47,450 --> 00:43:51,610 Allura issa għandna nistaqsu lilna nfusna algorithmically fejn nistgħu npoġġu 55. 969 00:43:51,610 --> 00:43:53,610 Allura lkoll nafu, ovvjament, fejn hi probabbilment 970 00:43:53,610 --> 00:43:55,401 tappartjeni jekk aħna qed tipprova biex iżommu din magħżula 971 00:43:55,401 --> 00:43:58,299 u jekk inti guys tista 'tieħu waħda pass lura hekk aħna ma jaqgħux off 972 00:43:58,299 --> 00:43:59,590 l-istadju, li tkun kbira. 973 00:43:59,590 --> 00:44:01,420 Allura fil-fatt, Rainbow, tibda minn hawn miegħi, 974 00:44:01,420 --> 00:44:04,200 għaliex aħna bħala l-kompjuter issa jista tara biss varjabbli waħda kull darba. 975 00:44:04,200 --> 00:44:05,190 Mela jekk dan huwa l-ewwel node. 976 00:44:05,190 --> 00:44:07,160 Avviż huwa ma node, hu biss pointer, 977 00:44:07,160 --> 00:44:10,270 u hu għalhekk li hu mfassal biex ikun biss id-daqs ta 'pointer, mhux 978 00:44:10,270 --> 00:44:11,780 wieħed minn dawk rettangoli sħiħa. 979 00:44:11,780 --> 00:44:16,650 Allura aħna qed tmur biex jiċċekkjaw f'kull iterazzjoni hija 55 inqas minn 9? 980 00:44:16,650 --> 00:44:17,150 No 981 00:44:17,150 --> 00:44:19,060 Hija 55 inqas minn 17? 982 00:44:19,060 --> 00:44:19,720 No 983 00:44:19,720 --> 00:44:20,800 Inqas minn 22? 984 00:44:20,800 --> 00:44:22,020 Inqas minn 26? 985 00:44:22,020 --> 00:44:23,390 Inqas minn 34? 986 00:44:23,390 --> 00:44:25,890 U hekk issa, ovvjament Rainbow jappartjeni fl-aħħar. 987 00:44:25,890 --> 00:44:27,270 Allura biex tkun ċara, u liema kien l-isem tiegħek, Taylor? 988 00:44:27,270 --> 00:44:27,895 >> TAYLOR: Taylor. 989 00:44:27,895 --> 00:44:32,510 DAVID Malan: Allura fost l Taylor naħa tax-xellug u l-idejn Rainbow hawn, 990 00:44:32,510 --> 00:44:38,324 li idejn jeħtieġ li jiġi lejn dak fil tordna li daħħal 55 fis din il-lista? 991 00:44:38,324 --> 00:44:39,240 What do we bżonn tagħmel? 992 00:44:39,240 --> 00:44:39,700 Yeah? 993 00:44:39,700 --> 00:44:41,140 >> UDJENZA: idejn Taylor jeħtieġ li jiġi xellug. 994 00:44:41,140 --> 00:44:41,680 >> DAVID Malan: Eżattament. 995 00:44:41,680 --> 00:44:43,800 Allura ddaħħal node fit-tarf tal-lista 996 00:44:43,800 --> 00:44:47,140 huwa pjuttost sempliċi għaliex Taylor biss għandu punt, minflok fil-art 997 00:44:47,140 --> 00:44:49,640 jew aħna ser sejħa hija nulla, null huwa tip tan-nuqqas 998 00:44:49,640 --> 00:44:51,640 ta 'pointer jew speċjali żero pointer, int 999 00:44:51,640 --> 00:44:53,740 jmorru għall-punt ma xellug tiegħek idejn fil Rainbow u mbagħad Rainbow, 1000 00:44:53,740 --> 00:44:55,910 Fejn xellug tiegħek naħa probabbilment punt? 1001 00:44:55,910 --> 00:44:56,570 Down. 1002 00:44:56,570 --> 00:45:00,140 Mhuwiex tajjeb jekk naħa tagħha huwa tip tal tipponta off hawn jew tip ta 'kwalunkwe 1003 00:45:00,140 --> 00:45:00,640 li mod. 1004 00:45:00,640 --> 00:45:02,407 Li tkun ikkunsidrata valur żibel, 1005 00:45:02,407 --> 00:45:04,240 imma jekk hi punti li xi valur magħruf, aħna ser 1006 00:45:04,240 --> 00:45:07,360 sejħa hija żero jew null, li OK għaliex għandna tul f'dan 1007 00:45:07,360 --> 00:45:09,390 u nafu l-lista issa hija kompluta. 1008 00:45:09,390 --> 00:45:11,550 >> Allura x'hemm ieħor każ relattivament sempliċi? 1009 00:45:11,550 --> 00:45:13,125 Nistgħu malloc 5? 1010 00:45:13,125 --> 00:45:14,010 Come fuq up. 1011 00:45:14,010 --> 00:45:14,782 X'hemm isem tiegħek? 1012 00:45:14,782 --> 00:45:15,490 Tiffany: Tiffany. 1013 00:45:15,490 --> 00:45:16,000 DAVID Malan: Im sorry? 1014 00:45:16,000 --> 00:45:16,470 Tiffany: Tiffany. 1015 00:45:16,470 --> 00:45:16,880 DAVID Malan: Tiffany. 1016 00:45:16,880 --> 00:45:17,110 Kull dritt. 1017 00:45:17,110 --> 00:45:19,071 Tiffany ġie malloced mal-valur 5. 1018 00:45:19,071 --> 00:45:19,570 Come fuq up. 1019 00:45:19,570 --> 00:45:23,820 Dan wieħed relattivament faċli wisq, iżda ejja jikkunsidraw ordni ta 'operazzjonijiet issa. 1020 00:45:23,820 --> 00:45:25,820 Kien pjuttost faċli mal Taylor fl-aħħar. 1021 00:45:25,820 --> 00:45:30,302 Numru 5 huwa naturalment anqas minn 9, u hekk aħna David, għandna Tiffany, 1022 00:45:30,302 --> 00:45:31,260 u dak li kien l-isem tiegħek? 1023 00:45:31,260 --> 00:45:31,680 >> Jake: Jake. 1024 00:45:31,680 --> 00:45:32,470 >> DAVID Malan: Jake. 1025 00:45:32,470 --> 00:45:34,300 Tiffany, Jake, u David. 1026 00:45:34,300 --> 00:45:36,580 Li sekondaman għandhom ikunu aġġornati ewwel? 1027 00:45:36,580 --> 00:45:39,260 1028 00:45:39,260 --> 00:45:40,590 What do inti tixtieq li tagħmel hawn? 1029 00:45:40,590 --> 00:45:45,244 Hemm modi possibbli koppja, iżda hemm ukoll modi aktar ħżiena wieħed jew. 1030 00:45:45,244 --> 00:45:46,620 >> UDJENZA: Tibda bl leftmost. 1031 00:45:46,620 --> 00:45:47,800 >> DAVID Malan: Tibda bil-leftmost. 1032 00:45:47,800 --> 00:45:49,008 Min hu l-leftmost hawn allura? 1033 00:45:49,008 --> 00:45:49,700 UDJENZA: L-ewwel. 1034 00:45:49,700 --> 00:45:50,366 >> DAVID Malan: OK. 1035 00:45:50,366 --> 00:45:53,781 Allura tibda bl-ewwel u fejn taħseb tixtieq li taġġorna l-idejn David li tkun? 1036 00:45:53,781 --> 00:45:54,780 UDJENZA: Lejn l-5. 1037 00:45:54,780 --> 00:45:55,446 DAVID Malan: OK. 1038 00:45:55,446 --> 00:45:59,026 Allura David, punt ħamsa jew Tiffany hawn, u issa? 1039 00:45:59,026 --> 00:46:01,072 >> UDJENZA: Tiffany juri l-9? 1040 00:46:01,072 --> 00:46:04,030 DAVID Malan: Perfect, ħlief l Binky kap biss tip ta 'apostrofu, right? 1041 00:46:04,030 --> 00:46:06,820 Minħabba x'hemm ħażin ma din l-istampa litteralment? 1042 00:46:06,820 --> 00:46:08,070 UDJENZA: Xejn hija li tipponta. 1043 00:46:08,070 --> 00:46:09,945 DAVID Malan: Xejn huwa tipponta lejn Jake issa. 1044 00:46:09,945 --> 00:46:13,360 Imxejna litteralment orfni 9 u 17, u konna litteralment 1045 00:46:13,360 --> 00:46:18,450 nixxew kollha ta 'dan il-memorja, għaliex mill aġġornament naħa David ewwel, li l- 1046 00:46:18,450 --> 00:46:21,660 multa sa fejn huwa korrett tipponta lejn Tiffany issa, 1047 00:46:21,660 --> 00:46:25,410 imma jekk l-ebda wieħed kellu l- previżjoni għall-punt fil Jake, 1048 00:46:25,410 --> 00:46:27,490 allura aħna tilfu il totalità ta 'dik il-lista. 1049 00:46:27,490 --> 00:46:28,200 Mela ejja jħoll. 1050 00:46:28,200 --> 00:46:30,950 Allura li kienet ħaġa tajba li vjaġġ fuq imma ejja jikkoreġu issa. 1051 00:46:30,950 --> 00:46:33,624 X'għandi nagħmlu ewwel minflok? 1052 00:46:33,624 --> 00:46:34,124 Yeah? 1053 00:46:34,124 --> 00:46:35,791 >> UDJENZA: Tiffany għandu jindika fil-9? 1054 00:46:35,791 --> 00:46:37,582 DAVID Malan: I ma tistax nikseb li qrib lilek. 1055 00:46:37,582 --> 00:46:38,720 Min għandu punt fil-9? 1056 00:46:38,720 --> 00:46:39,220 >> UDJENZA: Tiffany. 1057 00:46:39,220 --> 00:46:39,390 >> DAVID Malan: Kull dritt. 1058 00:46:39,390 --> 00:46:41,200 Allura Tiffany għandu l-ewwel punt fuq l-9. 1059 00:46:41,200 --> 00:46:43,550 Allura Tiffany għandhom jieħdu fuq valur identiku 1060 00:46:43,550 --> 00:46:45,820 li David, li tidher żejda għal mument, 1061 00:46:45,820 --> 00:46:48,820 iżda li l-multa għaliex issa, it-tieni pass, nistgħu taġġorna naħa David 1062 00:46:48,820 --> 00:46:52,680 punt fuq Tiffany, u mbagħad jekk aħna biss tip ta 'teknoloġiji nodfa affarijiet up 1063 00:46:52,680 --> 00:46:55,740 bħallikieku dan huwa tip ta 'rebbiegħa simili, issa li l-inserzjoni korretta. 1064 00:46:55,740 --> 00:46:56,700 Allura eċċellenti. 1065 00:46:56,700 --> 00:46:57,970 Allura issa aħna qed kważi hemm. 1066 00:46:57,970 --> 00:47:01,075 Ejja jdaħħal waħda finali valur bħall-valur 20. 1067 00:47:01,075 --> 00:47:03,010 Jekk nistgħu malloc voluntier finali wieħed? 1068 00:47:03,010 --> 00:47:04,140 Come fuq up. 1069 00:47:04,140 --> 00:47:06,224 Allura dan wieħed l-ftit aktar delikata. 1070 00:47:06,224 --> 00:47:08,390 Imma verament, il-kodiċi aħna qed miktub, għalkemm verbalment, 1071 00:47:08,390 --> 00:47:10,610 huwa biss simili li jkollhom mazz tal jekk il-kundizzjonijiet issa, id-dritt? 1072 00:47:10,610 --> 00:47:12,318 Kellna kundizzjoni verifika jekk ikun jappartjeni 1073 00:47:12,318 --> 00:47:13,840 fl-aħħar, forsi l-bidu. 1074 00:47:13,840 --> 00:47:15,940 Għandna bżonn xi tip ta 'loop biex isibu l-post fin-nofs. 1075 00:47:15,940 --> 00:47:17,400 Mela ejja tagħmel dan ma 'dak l-isem tiegħek? 1076 00:47:17,400 --> 00:47:17,700 >> ERIC: Eric. 1077 00:47:17,700 --> 00:47:18,340 >> DAVID Malan: Eric? 1078 00:47:18,340 --> 00:47:18,660 Eric. 1079 00:47:18,660 --> 00:47:19,368 Għandi pjaċir. 1080 00:47:19,368 --> 00:47:20,490 Allura aħna għandna 20. 1081 00:47:20,490 --> 00:47:21,220 Inqas minn ħamsa? 1082 00:47:21,220 --> 00:47:21,530 No 1083 00:47:21,530 --> 00:47:22,160 Inqas minn disa? 1084 00:47:22,160 --> 00:47:22,410 No 1085 00:47:22,410 --> 00:47:23,050 Inqas minn 17? 1086 00:47:23,050 --> 00:47:23,550 No 1087 00:47:23,550 --> 00:47:23,740 KOLLOX SEW. 1088 00:47:23,740 --> 00:47:25,701 Huwa jappartjeni hawn u ismijiet tiegħek mill-ġdid huma? 1089 00:47:25,701 --> 00:47:26,200 SUE: Sue. 1090 00:47:26,200 --> 00:47:26,880 DAVID Malan: Sue. 1091 00:47:26,880 --> 00:47:27,379 ALEX: Alex. 1092 00:47:27,379 --> 00:47:28,790 DAVID Malan: Sue, Alex, u? 1093 00:47:28,790 --> 00:47:29,290 ERIC: Eric. 1094 00:47:29,290 --> 00:47:30,120 DAVID Malan: Eric. 1095 00:47:30,120 --> 00:47:32,140 Li f'idejha bżonn tikseb aġġornati ewwel? 1096 00:47:32,140 --> 00:47:32,930 >> UDJENZA: Eric. 1097 00:47:32,930 --> 00:47:33,429 KOLLOX SEW. 1098 00:47:33,429 --> 00:47:35,200 Allura s Eric għandu jiġi lejn fejn? 1099 00:47:35,200 --> 00:47:35,930 Fil-22. 1100 00:47:35,930 --> 00:47:36,430 Tajba. 1101 00:47:36,430 --> 00:47:38,180 U issa xi jmiss? 1102 00:47:38,180 --> 00:47:40,800 Sue jista imbagħad il-punt fuq Eric u issa, jekk inti guys biss 1103 00:47:40,800 --> 00:47:44,077 tagħmel xi kamra, li huwa multa viżwalment, issa aħna ghamilt l-inserzjoni. 1104 00:47:44,077 --> 00:47:47,160 Mela ejja issa jeżamina xi kwistjoni, iżda nirringrazzjak tant għall-voluntiera tagħna. 1105 00:47:47,160 --> 00:47:48,090 Isir ħafna tajjeb. 1106 00:47:48,090 --> 00:47:50,831 Inti tista 'żżomm dawn, jekk inti tixtieq. 1107 00:47:50,831 --> 00:47:54,140 U aħna għandna rigal firda sabiħ jekk youd kull nieħu ballun stress. 1108 00:47:54,140 --> 00:47:56,030 Let me biss tgħaddi din isfel. 1109 00:47:56,030 --> 00:47:58,430 Allura x'inhi l-takeaway ta 'dan? 1110 00:47:58,430 --> 00:48:02,430 Dan jidher li aqwa sakemm għandna issa 1111 00:48:02,430 --> 00:48:06,360 introduċiet alternattiva għall- firxa li mhix daqshekk limitata 1112 00:48:06,360 --> 00:48:07,780 għal firxa ta 'ċertu daqs fiss. 1113 00:48:07,780 --> 00:48:09,380 Huma jistgħu jikbru b'mod dinamiku. 1114 00:48:09,380 --> 00:48:13,220 >> Iżda ferm simili Rajna fil-ġimgħat passat, aħna qatt tikseb xejn b'xejn, 1115 00:48:13,220 --> 00:48:15,740 bħal żgur hemm kompromess hawn. 1116 00:48:15,740 --> 00:48:18,890 Allura ma 'rasu ta' marbut lista, hija din dinamiżmu? 1117 00:48:18,890 --> 00:48:21,590 Din il-ħila biex jikbru u franchement, aħna seta 'jsir ħassar 1118 00:48:21,590 --> 00:48:23,570 u aħna tista 'tiċkien kif meħtieġ. 1119 00:48:23,570 --> 00:48:24,710 Liema prezz aħna tħallas? 1120 00:48:24,710 --> 00:48:28,510 1121 00:48:28,510 --> 00:48:30,340 Darbtejn daqs ispazju, l-ewwel nett. 1122 00:48:30,340 --> 00:48:34,010 Jekk inti tħares lejn l-istampa, m'għadhiex am I ħażna lista tan-numri interi. 1123 00:48:34,010 --> 00:48:36,740 Jien ħażna lista ta interi plus pointers. 1124 00:48:36,740 --> 00:48:38,240 Hekk jien irduppjar tal-ammont ta 'spazju. 1125 00:48:38,240 --> 00:48:40,740 Issa, forsi li mhux tali a big deal 4 bytes, 8 bytes, 1126 00:48:40,740 --> 00:48:43,160 iżda tista 'ċertament żid up għal settijiet ta 'data kbar. 1127 00:48:43,160 --> 00:48:45,570 X'hemm tnaqqis ieħor? 1128 00:48:45,570 --> 00:48:46,070 Yeah? 1129 00:48:46,070 --> 00:48:48,010 >> UDJENZA: Irridu travers minnhom wieħed mill-wieħed. 1130 00:48:48,010 --> 00:48:48,760 DAVID Malan: Yeah. 1131 00:48:48,760 --> 00:48:50,260 Irridu travers magħhom wieħed mill-wieħed. 1132 00:48:50,260 --> 00:48:53,860 Inti taf liema, aħna taw up dan super Karatteristika konvenjenti ta 'faxxa kwadru 1133 00:48:53,860 --> 00:48:57,240 notazzjoni, aktar sew magħrufa bħala t'aċċess bl-addoċċ, 1134 00:48:57,240 --> 00:48:59,280 fejn nistgħu biss jaqbżu ma 'element individwali 1135 00:48:59,280 --> 00:49:01,470 imma issa jekk I xorta kellhom voluntiera tiegħi hawn, 1136 00:49:01,470 --> 00:49:04,660 jekk jien ridt li jsibu l- numru 22, ma nistax biss 1137 00:49:04,660 --> 00:49:06,620 jaqbżu għal xi ħaġa xi ħaġa parentesi. 1138 00:49:06,620 --> 00:49:10,530 Għandi li tħares fuq il-lista, ħafna bħal eżempji tiftix tagħna linearment, 1139 00:49:10,530 --> 00:49:12,260 biex issib in-numru 22. 1140 00:49:12,260 --> 00:49:14,340 Allura aħna jidhru li jkunu ħallsu prezz hemmhekk. 1141 00:49:14,340 --> 00:49:16,430 Iżda nistgħu madankollu isolvu problemi oħra. 1142 00:49:16,430 --> 00:49:18,587 >> Fil-fatt, let me jintroduċu biss ftit visuals. 1143 00:49:18,587 --> 00:49:20,920 Mela jekk inti kont qed isfel sa Mather tal Dining Hall reċentement, 1144 00:49:20,920 --> 00:49:23,320 inti ser tfakkar li tagħhom munzelli ta 'dixxijiet bħal dan, 1145 00:49:23,320 --> 00:49:26,300 aħna mislufa dawn mill Annenberg qabel klassi. 1146 00:49:26,300 --> 00:49:28,930 Allura dan munzell ta 'dixxijiet, għalkemm, huwa rappreżentattiv fil-fatt 1147 00:49:28,930 --> 00:49:30,860 ta 'struttura data xjenza tal-kompjuter. 1148 00:49:30,860 --> 00:49:32,910 Hemm struttura data fix-xjenza tal-kompjuter 1149 00:49:32,910 --> 00:49:38,010 magħrufa bħala munzell li ħafna nicely jippresta ruħu għal eżattament dan viżwali. 1150 00:49:38,010 --> 00:49:41,380 Mela jekk kull wieħed minn dawn trejs mhix trej iżda bħal numru u xtaqt 1151 00:49:41,380 --> 00:49:45,010 taħżen numri, I tista 'tpoġġi waħda stabbiliti hawn, 1152 00:49:45,010 --> 00:49:48,320 u I tista 'tpoġġi ieħor stabbiliti hawn, u tkompli stivar numri 1153 00:49:48,320 --> 00:49:53,180 fuq quċċata ta 'xulxin, u x'hemm potenzjalment utli dwar dan 1154 00:49:53,180 --> 00:49:55,450 hija li x'inhu l-implikazzjoni din l-istruttura data? 1155 00:49:55,450 --> 00:49:58,045 Liema numru nista iġbed ewwel l-aktar konvenjenti? 1156 00:49:58,045 --> 00:50:00,640 1157 00:50:00,640 --> 00:50:03,030 L-aktar reċentement poġġiet wieħed fuq hemmhekk. 1158 00:50:03,030 --> 00:50:06,430 >> Allura dan huwa dak li aħna kieku ssejjaħ fil xjenza tal-kompjuter struttura data LIFO. 1159 00:50:06,430 --> 00:50:08,070 Aħħar li l-ewwel out. 1160 00:50:08,070 --> 00:50:10,800 U aħna ser tara qabel twil għaliex li jista 'jkun utli iżda għal issa, 1161 00:50:10,800 --> 00:50:12,200 biss tikkunsidra l-proprjetà. 1162 00:50:12,200 --> 00:50:15,158 U huwa tip ta 'stupid jekk taħseb dwar kif il-sala dining tagħmlu. 1163 00:50:15,158 --> 00:50:17,910 Kull darba li trays nodfa u tpoġġi dawk reëenti fuq, 1164 00:50:17,910 --> 00:50:22,160 inti jista 'jkollhom qabel nadif iżda eventwalment ħafna maħmuġ u trab 1165 00:50:22,160 --> 00:50:24,360 trej fil-qiegħ nett attwalment jekk int qatt 1166 00:50:24,360 --> 00:50:26,820 jasal sal-qiegħ ta 'dak munzell, għaliex inti biss 1167 00:50:26,820 --> 00:50:29,380 iżommu tqegħid l-ġodda u dawk nodfa fuq quċċata ta 'dan. 1168 00:50:29,380 --> 00:50:31,840 L-istess ħaġa jista 'jiġri f'supermarkit wisq. 1169 00:50:31,840 --> 00:50:35,450 Jekk għandek każ display ta 'ħalib u kull CVS darba 1170 00:50:35,450 --> 00:50:37,610 jew min gets aktar ħalib, inti biss shove l ħalib 1171 00:50:37,610 --> 00:50:39,880 diġà għandek għall-dahar u inti tpoġġi l-ġodda bil-quddiem, 1172 00:50:39,880 --> 00:50:43,088 int se jkollhom xi pretty diżgustanti ħalib fl-aħħar tal-istruttura tad-data, 1173 00:50:43,088 --> 00:50:46,390 għaliex dan huwa dejjem fil-qiegħ jew ekwivalenti huwa dejjem fuq wara. 1174 00:50:46,390 --> 00:50:50,407 >> Imma hemm mod ieħor biex jaħsbu dwar lining up data u per eżempju, dan. 1175 00:50:50,407 --> 00:50:53,490 Jekk int wieħed minn dawk in-nies li jħobb għal-linja up barra ta 'ħwienet Apple 1176 00:50:53,490 --> 00:50:55,610 meta prodott ġdid jidħol out, int probabilment 1177 00:50:55,610 --> 00:50:58,780 mhux permezz ta 'teknika munzell istruttura għaliex inti 1178 00:50:58,780 --> 00:51:03,070 se jaljenaw kulħadd li huwa lining sa tixtri xi ġugarell il-ġdid. 1179 00:51:03,070 --> 00:51:06,610 Pjuttost, int probabilment tuża liema tip ta 'struttura data 1180 00:51:06,610 --> 00:51:10,050 jew liema tip ta 'sistema fid-dinja reali? 1181 00:51:10,050 --> 00:51:13,493 Nisperaw huwa linja, jew aktar sew jew aktar British simili, kju. 1182 00:51:13,493 --> 00:51:17,700 U jirriżulta kju hija wkoll istruttura tad-data fix-xjenza tal-kompjuter, 1183 00:51:17,700 --> 00:51:19,700 iżda kju għandha ħafna proprjetà differenti. 1184 00:51:19,700 --> 00:51:20,820 Mhuwiex LIFO. 1185 00:51:20,820 --> 00:51:21,990 Aħħar li l-ewwel out. 1186 00:51:21,990 --> 00:51:22,800 Alla jipprojbixxu. 1187 00:51:22,800 --> 00:51:24,280 Huwa minflok FIFO. 1188 00:51:24,280 --> 00:51:26,110 Ewwel, l-ewwel barra. 1189 00:51:26,110 --> 00:51:27,970 U li l-ħaġa tajba għall-ġustizzja fini " 1190 00:51:27,970 --> 00:51:30,428 ċertament meta int inforra up super kmieni fil-għodu. 1191 00:51:30,428 --> 00:51:33,400 Jekk ikollok hemm l-ewwel, inti tixtieq li toħroġ l-ewwel kif ukoll. 1192 00:51:33,400 --> 00:51:35,880 >> U hekk kollha ta 'din id-dejta istrutturi, kjuwijiet u stacks 1193 00:51:35,880 --> 00:51:39,220 u għenieqed ta 'oħrajn, jirriżulta inti tista 'taħseb ta' dan bħala biss firxa. 1194 00:51:39,220 --> 00:51:41,820 Dan huwa firxa, forsi daqs fiss 4, iżda d 1195 00:51:41,820 --> 00:51:44,990 jkun it-tip ta 'sbieħ jekk nistgħu biss pile trejs kważi infinitament tall jekk aħna 1196 00:51:44,990 --> 00:51:46,780 jkollhom li trejs ħafna jew numri. 1197 00:51:46,780 --> 00:51:48,840 Allura forsi rridu jużaw lista marbuta hawn, 1198 00:51:48,840 --> 00:51:51,800 iżda l-kompromess se tkun potenzjalment li għandna bżonn memorja aktar, 1199 00:51:51,800 --> 00:51:55,930 jieħu ftit aktar ħin, iżda aħna ma jillimitawx l-għoli tal-munzell, 1200 00:51:55,930 --> 00:51:59,550 ferm simili display każ Mather ta jista jillimitaw id-daqs tal-munzell, 1201 00:51:59,550 --> 00:52:03,117 u għalhekk dawn huma deċiżjonijiet ta 'disinn jew għażliet disponibbli lilna finalment. 1202 00:52:03,117 --> 00:52:04,950 Allura ma din id-data istrutturi, konna beda 1203 00:52:04,950 --> 00:52:09,360 jaraw limiti ta 'fuq ġodda potenzjalment fuq dak li qabel kien super fast 1204 00:52:09,360 --> 00:52:11,260 u fejn aħna ser jitilqu off llum u fejn 1205 00:52:11,260 --> 00:52:13,200 aħna ser tama li tikseb sa hija l-Erbgħa, aħna ser 1206 00:52:13,200 --> 00:52:15,740 tibda tħares lejn data struttura li tikri us tfittxija 1207 00:52:15,740 --> 00:52:18,260 permezz ta 'data fi log aħħar ħin mill-ġdid. 1208 00:52:18,260 --> 00:52:21,470 U rajna li, jfakkru, fl zero ġimgħa u wieħed bil-tfittxija binarju jew aqsam 1209 00:52:21,470 --> 00:52:22,180 u conquer. 1210 00:52:22,180 --> 00:52:26,240 Huwa li ġejjin lura u aħjar għadhom, l-Grail qaddis għal dan l-erbgħa 1211 00:52:26,240 --> 00:52:29,510 se jkun li toħroġ il- istruttura tad-data li timxi verament 1212 00:52:29,510 --> 00:52:32,070 jew teoretiku fil ħin kostanti, fejn 1213 00:52:32,070 --> 00:52:34,760 ma jimpurtax kemm miljuni jew biljuni ta 'affarijiet 1214 00:52:34,760 --> 00:52:38,470 għandna fl-istruttura tad-data, se jqarrbuna ħin kostanti, forsi pass wieħed 1215 00:52:38,470 --> 00:52:41,387 inkella tnejn jew 10 passi, iżda numri kostanti ta 'passi 1216 00:52:41,387 --> 00:52:42,970 li tfittex li struttura tad-data. 1217 00:52:42,970 --> 00:52:46,300 Li fil-fatt se tkun l-Grail qaddis iżda aktar fuq li nhar l-Erbgħa. 1218 00:52:46,300 --> 00:52:49,045 Ara ya imbagħad. 1219 00:52:49,045 --> 00:52:53,704 >> [Daqq tal-mużika] 1220 00:52:53,704 --> 00:56:08,448