[Daqq tal-mużika] [Daqq video] -He S tinsab. -Dwar xiex? -I Do not know. -Allura Dak li nafu? -Li Fil 09:15, Ray Santoya kien fil-ATM. -Yeah. Għalhekk il-kwistjoni hija, dak kien hu tagħmel fil 09:16? -Shooting-Millimetru 9 fuq xi ħaġa. Forsi hu ra l-sniper. -Jew kien jaħdem miegħu. -Wait. Mur lura wieħed. Liema tara? -Bring Wiċċu up full screen. Nuċċalijiet -His. -Hemm L riflessjoni. -Hija Hija l-tim tal-baseball Nuevitas. C'est logo tagħhom. -u Hu tkellem lil min liebes dak ġakketta. [END Daqq] DAVID Malan: Kull dritt. Dan huwa CS50 u dan huwa daqsxejn aktar ta [inaudible] li magħhom int dabbling bil-problema stabbiliti erba '. Illum tibda tfittex ftit aktar profondament fil dawn l-affarijiet imsejħa pointers, li anki jekk huwa suġġett pretty arcane, jirriżulta li huwa għaddej jkun il-mezz li bih nistgħu tista 'tibda bini u l-assemblaġġ programmi ħafna aktar sofistikati. Iżda aħna ma kien nhar l-Erbgħa l-aħħar permezz ta 'xi claymation ewwel. Allura dan, irtirar, hija Binky u aħna użati lilu li tagħti ħarsa lejn programm li ma verament tagħmel xejn interessanti, iżda hija ma jikxfu xi ftit problemi. Allura biex tibda llum, għaliex ma we walk malajr permezz ta 'ftit ta' dawn il-passi, jippruvaw jiddistillaw fi termini tal-bniedem eżattament x'inhu għaddej hawn u għaliex dan huwa ħażin, u mbagħad jimxu fuq u fil-fatt jibda jinbena xi ħaġa ma din it-teknika? Allura dawn kienu l-ewwel żewġ linji f'dan il-programm u f'termini laymans, dak huma dawn iż-żewġ linji tagħmel? Xi ħadd li raġonevolment komda ma 'dak li ddikjarat fuq l-iskrin? Liema huma dawn iż-żewġ linji tagħmel? Huwa mhux kollha li differenti minn ġimgħa, iżda jkun hemm xi simbolu speċjali ġdid. Yeah? Lura hemm. UDJENZA: Tiddikjara pointers? DAVID Malan: Say mill-ġdid? UDJENZA: Tiddikjara pointers? DAVID Malan: pointers tiddikjara u ejja tirfina ftit aktar. UDJENZA: [inaudible] indirizz x u mbagħad y. DAVID Malan: U mbagħad jindirizza. Allura speċifikament dak li aħna qed tagħmel huwa aħna tiddikjara żewġ varjabbli. Dawn il-varjabbli, għalkemm, ser li jkunu ta 'stilla int tip, li b'mod aktar speċifiku jfisser huma ser taħżen l-indirizz ta 'int, rispettivament, X u Y. Issa hemm xi valuri? Hemm xi indirizzi attwali f'dawn żewġ varjabbli f'dan il-punt fil-ħin? No Huwa biss hekk imsejħa valuri taż-żibel. Jekk inti ma attwalment tassenja varjabbli, ikun x'ikun kien fil RAM qabel se timla ma 'żerijiet u dawk iż ta 'dawk varjabbli. Iżda aħna għadhom ma jafux liema huma u dak l se jkun kruċjali għas għaliex Binky mitlufa kap tiegħu aħħar ġimgħa. Għalhekk din kienet l claymation Inkarnazzjoni ta 'dan fejn inti għandek biss żewġ varjabbli, biċċiet ċirkolari ftit ta 'tafal, li jista 'jaħżen varjabbli, iżda bħala l-vleġeġ jitgeżwer jissuġġerixxu, dawn mhux qed attwalment tipponta biex kullimkien magħruf per se. Iva allura kellna din il-linja, u dan kien aħħar ġimgħa ġdid, malloc għall-memorja allokazzjoni, li huwa biss mod fancy javżak-sistema operattiva, Linux jew Mac OS jew Windows, ħej, agħti lili xi memorja, u kull ma għandek tgħid is-sistema operattiva huwa dak meta jitolbu dan għall-memorja. Huwa mhux se kura liema int se tagħmel magħha, imma inti trid tghid l-funzjonament sistema liema permezz ta 'malloc. Yeah? UDJENZA: Kemm? DAVID Malan: Kemm? Kemm fil bytes, u għalhekk, dan, għal darb'oħra, eżempju artifiċjali, huwa biss qal, agħtini l-daqs ta 'int. Issa, id-daqs ta 'int huwa erba bytes jew 32 bits. Allura dan huwa biss mod ta ' qal, ħej, sistema operattiva, tagħti me erba 'bytes ta' memorja li nista 'nuża għad-dispożizzjoni tiegħi, u speċifikament, dak ma ritorn malloc rigward għal dak blokki ta 'erba' bytes? UDJENZA: Indirizz? DAVID Malan: L-indirizz. L-indirizz ta 'dak blokki ta' erba 'bytes. Eżattament. U hekk dan huwa dak maħżun fl-aħħar fil x u hu għalhekk li aħna ma verament kura dak in-numru ta 'dik indirizz huwa, jekk huwa OX1 jew ox2 jew xi indirizz hexadeċimali cryptic. Aħna biss kura pictorially li dak il-varjabbli x issa huwa tipponta lejn dak blokki ta 'memorja. Allura l-vleġġa jirrappreżenta pointer, jew b'mod aktar speċifiku, l-indirizz tal-memorja. Iżda għal darb'oħra, aħna ma tipikament kura x'inhuma dawn l-indirizzi attwali huma. Issa, din il-linja jgħid dak f'termini laymans? Star x gets 42 virgola. Xi jfisser dan? Inti tixtieq tmur? Ma scratch għonq tiegħek. UDJENZA: L-indirizz ta 'x hija fil-42. DAVID Malan: L-indirizz ta 'x huwa fil 42. Mhux pjuttost. Allura qrib, iżda pjuttost mhux, għaliex hemm l-istilla li l-prefiss dan x. Għalhekk għandna bżonn li tweak ftit. Yeah? UDJENZA: Il-valur li l- pointer x hija li tipponta lejn huwa 42. DAVID Malan: OK. Il-valur li l-pointer x hija tipponta lejn, ejja ngħidu, għandhom ikunu 42, jew imqiegħda mod ieħor, l-istilla x jgħid, mur għal dak kollu indirizz huwa x, jekk huwa 1 Oxford Triq jew 33 Oxford Street jew OX1 jew ox33, ikun x'ikun dak l-indirizz numeriku huwa, star x hija l-dereferencing ta x. Allura jmorru f'dak l-indirizz u mbagħad iwettqu l-għadd 42 hemmhekk. Allura li ikun b'mod ekwivalenti ta 'tgħid li. Allura li kollox multa u mbagħad aħna se jirrappreżentaw l-istampa kif ġej fejn konna miżjud l 42 sa dik blokki ta 'erba bytes fuq il-lemin, imma din il-linja kienet fejn l-affarijiet marru awry u l-kap Binky tal popped off f'dan il-punt, minħabba affarijiet ħżiena jiġri meta inti dereference valuri żibel jew inti dereference invalida pointers, u jien ngħidlek invalida minħabba f'dan il-punt fil- istorja, dak li hu ġewwa ta 'y? X'inhu l-valur tal y bbażati fuq il-ftit passi passat? Yeah? Dak X'inhu? UDJENZA: An indirizz. DAVID Malan: An indirizz. Għandu jkun indirizz imma jiena initialized dan? So I għadhom ma. Allura dak li hu magħruf li jkun fil hemmhekk? Huwa biss xi valur żibel. Dan jista 'jkun kwalunkwe indirizz minn żero sa 2 biljuni jekk għandek żewġ gigs ta 'RAM, jew żero għal 4 biljun jekk inti stajt ltqajna erba gigabytes ta 'RAM. Huwa xi valur żibel, iżda l-problema hija li s-sistema operattiva, jekk ma jkunx tak li blokki ta 'memorja speċifikament li inti qed tipprova tmur, huwa ġeneralment ser jikkawża dak Rajna bħala tort segmentazzjoni. Allura fil-fatt, kwalunkwe fostkom li għadhom tħabtu lejn problemi fil-ħinijiet uffiċċju jew problemi li l-aktar ġeneralment ma jippruvaw figura tort segmentazzjoni, li ġeneralment tfisser int jmissu segment ta memorja li inti ma għandu jkun. Int jmissu memorja li is-sistema operattiva ma jkunx inti permess għal mess, jekk huwa billi esaġerata fil-firxa tiegħek jew li tibda issa, jekk huwa għaliex int jmissu memorja li biss xi valur żibel. Allura tagħmel star x hawnhekk hija tip ta 'mġiba mhux definiti. Inti qatt ma għandhom jagħmlu dan minħabba odds huma, il-programm jinsab biss se crash, għaliex inti qed tgħid, mur dan l-indirizz u inti għandek ebda idea fejn dak l-indirizz fil-fatt hu. Għalhekk is-sistema operattiva huwa probabbli ser crash program tiegħek bħala riżultat u tabilħaqq, dan huwa dak li ġara hemm biex Binky. Allura finalment, Binky fiss din il-problema ma 'dan. Allura dak il-programm innifsu kien difettuż. Imma jekk inti tip ta nimxu 'l quddiem u jesegwixxi din il-linja minflok, y ugwali x ifisser biss x'ikun address huwa x, wkoll poġġih fil y. U hekk pictorially, konna rappreżentati dan b'żewġ vleġeġ minn x u mill tipponta y l-istess post. Allura min-naħa semantika, x hija ugwali li y peress li kemm ta 'dawk qed jaħżnu l-istess indirizz, jimmiraw li tipponta lejn 42, u issa, meta inti tgħidli star y, mur l-indirizz y, dan m'għandux effett sekondarju interessanti. Allura l-indirizz fl y hija l- istess ħaġa bħat-indirizz fil x. Mela jekk inti tgħidli tmur għall-indirizz fil y u jibdlu l-valur sa 13, li inkella huwa affettwat? X huwa, punt D, biex ngħidu hekk, għandhomx jiġu affettwati wkoll. U fil-fatt, kif Nick ġibdet din l-istampa fil claymation kien eżattament dan. Anki jekk aħna isegwu l-pointer y, aħna spiċċajna fl-istess post, u hekk jekk konna biex jistampaw out x jew pointee y, il allura aħna se tara l-valur ta '13. Issa, I say pointee li jkun konsistenti mal-video. Programmaturi, li tiegħi għarfien, qatt fil-fatt jiġifieri l-pointee kelma, dak li huwa osservat fil, iżda għal konsistenza mal-video, realizzata li kollox dan kien fisser f'dik is-sitwazzjoni. Allura kwalnkwe kwistjoni dwar claymation jew pointers jew malloc għadha biss? Nru? Kull dritt. Allura mingħajr aktar dewmien, ejja tagħti ħarsa lejn fejn dan għandu fil-fatt ġew użati għal xi żmien. Allura aħna kellna din il-librerija CS50 li ltqajna kollha ta 'dawn il-funzjonijiet. Imxejna użati GetInt ħafna, GetString, probabbilment GetLongLong qabel fi PSet tiegħi wieħed jew hekk, imma dak li fil-fatt ilu għaddej? Well, ejja tagħti ħarsa taħt il-barnuża fi programm li tispira għaliex aħna nagħtuk l-CS50 librerija, u tabilħaqq mill-aħħar ġimgħa, bdejna teħid dawk roti ta 'taħriġ off. Allura dan issa huwa magħżul ta 'postmortem ta' dak ilu għaddej ġewwa l-librerija CS50, anke jekk aħna issa se tibda miexja bogħod minnha għal ħafna programmi. Allura dan huwa programm imsejjaħ scanf 0. Huwa super qasir. Hija biss għandha dawn il-linji, iżda tintroduċi funzjoni msejħa scanf li aħna qed attwalment għaddejjin biex tara fil mument ġewwa tal-librerija CS50, għalkemm f'forma kemmxejn differenti. Allura dan il-programm fuq il-linja 16 huwa li tiddikjara varjabbli x. Allura tagħti me erba 'bytes għal int. Huwa kien javżak utent, numru jogħġbok, u mbagħad din hija linja interessanti li attwalment torbot flimkien il-ġimgħa li għaddiet u dan. Scanf, u mbagħad tinnota li tieħu string format, bħal printf, % i tfisser int, u mbagħad li tieħu tieni argument li jistenna ftit funky. Huwa ampersand x, u li jiġi mfakkar, rajna biss dan darba ġimgħa li għaddiet. Xi jfisser ampersand x jirrappreżenta? X'jagħmel ampersand tagħmel C? Yeah? UDJENZA: L-indirizz ta '. DAVID Malan: L-indirizz ta '. Allura huwa l-oppost tal-operatur stilla, billi l-operatur star jgħid, mur dan l-indirizz, l-operatur ampersand jgħid, insemmu l- indirizz ta 'dan il-varjabbli, u għalhekk dan huwa importanti, għaliex iskop scanf fil-ħajja huwa li skennjati l-utent tal kontribut mill-keyboard, jiddependi fuq xi hu jew hi tipi, u mbagħad jaqra input li utent fi varjabbli, imma aħna raw fl-aħħar ġimgħatejn li dik il-funzjoni tpartit li aħna ppruvaw sforz biex jimplimentaw kien biss imkisser. Ifakkar li bil-funzjoni tpartit, jekk aħna biss iddikjarati A u B kif ints, għamilna b'suċċess tpartit l- żewġ varjabbli ġewwa tal swap bħad bil-ħalib u ĠU iżda hekk kif swap lura, dak li kien ir-riżultat fir-rigward li x uy, il-valuri oriġinali? Xejn. Yeah. Xejn ġara dak iż-żmien, minħabba swaps tinbidel biss kopji lokali tiegħu, li fi kliem ieħor, kull dan iż-żmien, kull meta konna qed jittrasferixxu fl-argumenti funzjonijiet, aħna qed biss tgħaddi kopji ta 'dawn l-argumenti. Tista 'tagħmel ma' dak xi trid magħhom, iżda dawn qed tmur biex ikollhom l-ebda effett fuq il-valuri oriġinali. Allura dan huwa problematiku jekk inti jridu li jkollhom funzjoni simili scanf fil-ħajja, li l-għan huwa li scan input-utent mill-keyboard u mbagħad imla l-vojt, hekk li jitkellmu, jiġifieri, jagħti varjabbli bħal x valur, għaliex jekk jien kienu għal ftit jgħaddu x biex scanf, jekk inti tikkunsidra l-loġika ta 'l-aħħar ġimgħa, scanf tista 'tagħmel dak kollu li trid ma 'kopja ta x, iżda ma setgħux b'mod permanenti bidla x sakemm nagħtu scanf mappa teżor, biex ngħidu hekk, fejn x jimmarka l-post, fejn aħna jgħaddu fil-indirizz ta 'X sabiex scanf tista 'tmur hemm u fil-fatt bidla il-valur ta 'x. U hekk fil-fatt, kollha li dan il-programm ma jekk nagħmel scanf 0, fis-sors tiegħi Direttorju 5m, jagħmlu scanf 0, dot mmejla scanf, numru jekk jogħġbok 50, grazzi għall-50. Allura huwa mhux kollha li interessanti, imma dak li tassew qed jiġri hija li hekk kif I call scanf hawn, il-valur ta 'x qed jiġi permanentement. Issa, dan jidher sbieħ u tajba, u fil-fatt, Jidher bħal aħna ma verament bżonn il-librerija CS50 fil-livelli kollha aktar. Per eżempju, ejja jimxu dan darba aktar hawn. Let me terġa 'dan għat-tieni. Ejja nippruvaw numru jogħġbok u Minflok qal 50 bħal qabel, ejja biss jgħidu le. OK, dan huwa ftit stramb. KOLLOX SEW. U biss ftit nonsense hawn. Għalhekk ma jidhirx li jimmaniġġjaw sitwazzjonijiet żbaljati. Għalhekk għandna bżonn li minimament bidu jżid xi żball iċċekkjar- biex tiżgura li l-utent ikollu ittajpjat fil numru attwali bħall 50, minħabba kliem apparentement typing ma jinsabx bħala problematiċi, iżda probabbilment għandu jkun. Ejja nħarsu lejn din il-verżjoni issa li l- tentattiv tiegħi biex reimplement GetString. Jekk scanf għandha dan kollu funzjonalità mibnija, għaliex li aħna ġew dabbling ma 'dawn roti ta 'taħriġ bħal GetString? Well, hawnhekk huwa forsi tiegħi stess Verżjoni sempliċi ta 'GetString li biha ġimgħa ilu, I jista 'jkollhom qal, tagħti me a string u sejħa hija buffer. Illum, jien ser tibda biss qal star char, li, irtirar, huwa biss sinonimi. Huwa jistenna scarier iżda huwa l-istess ħaġa eżatt. Allura tagħti me a varjabbli imsejjaħ buffer li għaddej biex jaħżnu string, tell-sekwenza utent jekk jogħġbok, u mbagħad, bħad qabel, ejja tipprova li jissellef din il-lezzjoni scanf % s dan iż-żmien u mbagħad jgħaddu fi buffer. Issa, verifika sanità malajr. Why am I ma tgħid ampersand buffer dan iż-żmien? Jiddeduċu mill-eżempju preċedenti. UDJENZA: Char star huwa pointer. DAVID Malan: Eżattament, minħabba dan iż-żmien, char star huwa diġà pointer, indirizz, billi definizzjoni ta 'dak star jkunu hemm. U jekk scanf jistenna indirizz, huwa biżżejjed biss biex jgħaddu fi buffer. I m'għandhomx bżonn li jgħidu buffer ampersand. Għall-kurjuż, inti tista tagħmel xi ħaġa bħal din. Dan ikollu tifsira differenti. Dan se jagħtuk pointer għal pointer, li huwa attwalment ħaġa valida C, iżda għal issa, ejja jżommha sempliċi u jżommu l-istorja konsistenti. Jien biss ser jgħaddu fil buffer u li korretta. Il-problema għalkemm hija din. Let me imorru quddiem u run dan programm wara kompilazzjoni tagħha. Jagħmlu scanf 1. Indanna dan, kompilatur tiegħi qbid żball tiegħi. Agħti me-tieni waħda. Clang. Ejja ngħidu scanf-1.c. KOLLOX SEW. Hemm immorru. Ghandi bzonnha. CS50 ID għandha diversi settings tal-konfigurazzjoni li tipproteġik kontra lilek innifsek. I meħtieġa biex jiskonnettja dawk mill running clang manwalment dan iż-żmien. Allura string jekk jogħġbok. Jien ser jimxi 'l quddiem u t-tip fid-dinja bonjour favorit tiegħi. OK, nulli. Li mhux dak I ittajpjat. Allura huwa indikattiv ta ' xi ħaġa li tkun ħażina. Let me imorru quddiem u t-tip fi string verament twila. Grazzi għall-null u jien ma nafx jekk jien ser tkun kapaċi li jikkraxxja dan. Ejja nippruvaw kopja ftit pasta u ara jekk dan jgħin. Just paste ħafna ta 'dan. Huwa definittivament akbar string mis-soltu. Ejja biss verament tikteb. No Kkritikat dan. Kmand ma nstabx. Allura dak mhux relatati. Dan għaliex I pasted xi karattri ħżiena, iżda dan jirriżulta mhux sejjer jaħdem. Ejja nippruvaw dan darba aktar, minħabba huwa aktar gost jekk għandna attwalment crash dan. Ejja tip dan u issa, jien ser kopja string verament twila u issa ejja ara jekk irridu jista crash dan il-ħaġa. Avviż I jitħalla barra l-ispazji u linji ġodda u semicolons u l-karattri funky kollha. Ikteb. U issa l-network jinsab biss li bil-mod. I miżmum Kmand-V twil wisq, b'mod ċar. Kkritikat dan! Kmand ma nstabx. KOLLOX SEW. Ukoll, il-punt huwa madankollu dawn li ġejjin. Allura dak li huwa attwalment għaddejjin fuq din id-dikjarazzjoni ma tal char buffer star fuq il-linja 16? Allura dak am I jkollna meta I tiddikjara pointer? All jien jkollna huwa valur erba byte imsejħa buffer, imma x'hemm ġewwa ta 'dan fil-mument? Huwa biss xi valur żibel. Minħabba li kwalunkwe ħin li inti tiddikjara varjabbli fis-C, huwa biss xi valur żibel, u aħna qed jibdew vjaġġ fuq din ir-realtà. Issa, meta I tell scanf, mur dan l-indirizz u tpoġġi kwalunkwe t-tipi utent fil. Jekk it-tipi utent fil bonjour dinja, ukoll, fejn ma nressaq dan? Buffer hija valur żibel. Allura dak it-tip ta 'prodotti simili vleġġa li l-tipponta li jaf fejn. Forsi huwa tipponta dritt hawn fil-memorja tiegħi. U hekk meta l-utent tipi fil bonjour dinja, il-programm jipprova jagħmel l- string bonjour dinja backslash 0 f'dak blokki ta 'memorja. Iżda bi probabbiltà għolja, iżda ċar mhux 100% probabbiltà, il-kompjuter se mbagħad crash il-programm għaliex din m'hijiex memorja I għandhom jitħallew għall-mess. Allura fil-qosor, dan il-programm huwa difettuż għal eżattament dik ir-raġuni. Jien fundamentalment ma nagħmilx dak? Liema passi għandhom I titħalla barra, bħad aħna jitħalla barra bil ewwel eżempju Binky tal? Yeah? UDJENZA: allokazzjoni Memorja? DAVID Malan: allokazzjoni Memorja. I ma attwalment allokati kwalunkwe memorja għal dak string. Allura nistgħu jiffissaw dan fi ftit ta 'modi. Wieħed, nistgħu jżommha sempliċi u fil-fatt, issa int ser tibda biex tara imċajpra tal-linji bejn dak firxa hija, dak string hija, dak li star char hija, dak firxa ta 'Chars hu. Hawn tieni eżempju jinvolvu kordi u avviż kollha I ghamilt fuq il-linja 16 huwa, minflok ta 'tgħid li buffer se jkun char star, pointer għal blokki ta 'memorja, Jien ser tagħti b'mod proattiv ħafna myself buffer għal 16 karattri, u fil-fatt, jekk int familjari mal-buffering tul, probabbilment mid-dinja ta 'videos, fejn video huwa lqugħ, buffering, buffering. Ukoll, x'inhu l-konnessjoni hawn? Ukoll, Ġewwa l YouTube u ġewwa ta 'video players ġeneralment huwa firxa li l-akbar minn 16. Jista 'jkun firxa ta' daqs wieħed megabyte, forsi 10 megabytes, u f'dak firxa ma browser tiegħek tniżżel mazz sħiħ ta 'bytes, mazz sħiħ ta 'megabytes ta' video, u l-plejer video, Tal YouTube jew min i, jibda qari tal-bytes minn dak array, u kwalunkwe ħin li inti tara l- buffering kelma, buffering, dan ifisser l-attur għandu gotten sal-aħħar ta 'dak array. In-netwerk tant huwa baxx li ma jkunx mimlija mill-ġdid il-firxa b'aktar bytes u għalhekk int minn bits li juri lill-utent. Allura buffer huwa terminu apt hawn f'dik huwa biss firxa, blokki ta 'memorja. U dan se tiffissa lilha għaliex jirriżulta li inti jista 'jikkura arrays daqslikieku huma indirizzi, anki jekk buffer huwa biss simbolu, huwa sekwenza ta 'karattri, buffer, dan huwa utli għalija, l-programmer, inti tista 'tgħaddi l-isem tagħha madwar bħallikieku kienet pointer, daqs li kieku kienu l-indirizz ta 'blokki ta 'memorja għal 16 Chars. Allura dak li ngħid, I jistgħu jgħaddu l scanf eżattament din il-kelma u hekk issa, jekk I jagħmlu dan il-programm, jagħmlu scanf 2, dot slash scanf 2, u tip bonjour dinja, Daħħal, li time-- Hmm, dak li ġara? String jekk jogħġbok. What did I do wrong? Hello dinja, buffer. Hello dinja. Ah, I know dak li qed jagħmel. KOLLOX SEW. Allura huwa qari sa l-ewwel ispazju. Mela ejja iqarrqu għal ftit mument u jgħidu I biss riedu xi ħaġa tip verament twila bħal din hija sentenza twila li l-waħda, tnejn, tlieta, erba ', ħames, sitt, seba ', tmien, disa', 10, 11, 12, 13, 14, 15, 16. KOLLOX SEW. Huwa tabilħaqq sentenza twila. Allura din is-sentenza hija itwal minn 16 karattru u għalhekk meta I hit Ikteb, x'inhu jiġri? Ukoll, f'dan il-każ tal- buffer istorja, I kien iddikjara li attwalment qed firxa ma '16 Chars lesta li tmur. Allura wieħed, tnejn, tlieta, erba ', ħames, sitt, seba ', tmien, disa', 10, 11, 12, 13, 14, 15, 16. Allura 16 karattri, u issa, meta I jinqraw xi ħaġa bħal din hija twila sentenza, dak li jiġri huwa li jien ser jinqraw dan huwa twil S-E-N-T-E-N-C-E, sentenza. Allura dan huwa deliberatament ħaġa ħażina li I iżommu kitba lil hinn mill- konfini ta 'firxa tiegħi, lil hinn mill-konfini ta 'buffer tiegħi. I jistgħu jiksbu xortik tajba u l-programm ser iżżomm fuq tmexxija u ma 'kura, iżda ġeneralment, dan tabilħaqq se tiġrifa programm tiegħi, u huwa bug fil tiegħi kodiċi l-mument I pass lil hinn mill-konfini ta 'dak array, minħabba I ma nafx jekk huwa neċessarjament ser crash jew jekk jien biss se tikseb xxurtjati. Allura dan huwa problematiku għaliex F'dan il-każ, dan ma jidhirx li jaħdmu u ejja tentar destin hawn, anke jekk l IDE jidher li jittolleraw pjuttost ftit of-- Hemm immorru. Fl-aħħarnett. Hekk jien l-unika waħda li tista 'tara dan. So I biss kellhom ħafna gost ittajpjar out frażi attwali verament twila li ċertament qabżet 16 bytes, minħabba I ittajpjat f'dan multi-linja twila crazy frażi, u mbagħad avviż dak li ġara. Il-programm ppruvaw-istampar u mbagħad ltqajna tort segmentazzjoni u difetti segmentazzjoni huwa meta xi ħaġa bħal din jiġri u s-sistema operattiva jgħid Le, ma jistax imiss li l-memorja. Aħna qed tmur biex joqtlu il-programm għal kollox. Allura dan jidher problematiku. Stajt mtejba tal-programm li permezz tiegħu inqas ikollhom xi memorja, iżda dan jidher li tillimita l GetString funzjoni li jkollna spag ta 'xi tul finiti 16. Mela jekk inti tixtieq li tappoġġja itwal sentenzi minn 16 karattri, liema do you do? Well, inti tista 'żżid l- daqs ta 'dan buffer sa 32 jew li jidher tip ta 'qasir. Għaliex ma aħna biss tagħmel huwa 1,000 iżda timbotta lura. X'hemm-rispons intuwittivament ta biss jevitaw din il-problema billi tagħmel buffer tiegħi akbar, bħal 1,000 Chars? Bl-implimentazzjoni GetString b'dan il-mod. X'hemm tajjeb jew ħażin hawn? Yeah? UDJENZA: Jekk inti torbot up a lott ta 'spazju u inti ma tużah, allura inti ma tistax talloka mill-ġdid dak l-ispazju. DAVID Malan: Assolutament. Huwa ħela b'tali mod li jekk inti ma attwalment ħtieġa 900 ta 'dawk bytes u għadhom inti qed tistaqsi għal 1000 b'kollox xorta, int biss jikkunsmaw memorja aktar fuq kompjuter l-utent milli għandek bżonn, u wara kollox, xi wħud inti stajt diġà ltaqgħu magħhom fil-ħajja li meta int running lottijiet ta 'programmi u dawn qed tiekol lottijiet ta 'memorja, dan jista 'attwalment jkollhom impatt prestazzjoni u l-esperjenza l-utent fuq il-kompjuter. Allura dak it-tip ta 'soluzzjoni għażżien, għall-żgur, u bil-maqlub, huwa mhux biss ħalja, liema problema xorta jibqa ', anke jekk nagħmel buffer tiegħi 1000? Yeah? UDJENZA: Il-sekwenza huwa tul 1001. DAVID Malan: Eżattament. Jekk string tiegħek huwa t-tul 1001, inti għandek l-istess problema eżatt, u billi argument tiegħi, nixtieq biss imbagħad jagħmilha 2000, imma ma tafx fil quddiem kemm hu kbir għandu jkun, u għadhom, I do jkollhom biex jikkompilaw programm tiegħi qabel kiri nies jużaw u download it. Allura dan huwa eżattament it-tip ta ' Jittieħed li l jipprova librerija CS50 biex tgħinna ma 'u aħna ser biss t'għajn lejn uħud mill-implimentazzjoni sottostanti hawn, iżda dan huwa CS50 dot C. Dan huwa l-fajl li kien fuq CS50 IDE dawn il-ġimgħat kollha li inti kont qed tuża. Huwa pre-ikkumpilata u inti stajt ilhom jużawha awtomatikament min-natura ta 'wara l- sing L-bandiera CS50 ma clang, imma jekk jien iscroll down kollha permezz ta ' dawn il-funzjonijiet, hawn GetString, u biss biex jagħtuk togħma ta 'x'inhu għaddej, ejja tagħti ħarsa lejn il-kumplessità relattiva. Mhuwiex super twil funzjoni, iżda aħna ma għandek biex jaħsbu iebes dwar kif għanddu jkollna kordi. Allura hawnhekk buffer tiegħi u I apparentement initialize lill null. Dan, naturalment, huwa l- istess ħaġa bħat star char, imma I iddeċieda fil implimentazzjoni tal-librerija CS50 li jekk aħna qed tmur biex ikunu kompletament dinamiku, I do not know bil-quddiem kemm hu kbir ta ' utenti string se rridu nġibu. Hekk jien ser tibda mal biss string vojta u jien ser jibnu kemm memorja kif għandi bżonn biex jitwaħħal il-string utent u jekk jien ma jkollhom biżżejjed, jien ser jistaqsu is-sistema operattiva għall-memorja aktar. Jien ser jimxu string tagħhom fi blokki akbar ta 'memorja u jien ser jirrilaxxa jew ħielsa l blokki kbar biżżejjed ta 'memorja u aħna qed biss jmorru biex jagħmlu dan iteratively. Allura t'għajn malajr, here biss varjabbli li magħhom Jien ser iżżomm kont tal-kapaċità tal buffer tiegħi. Kemm bytes nista tajbin? Hawn n varjabbli li jien ser iżommu rekord ta 'kemm bytes huma attwalment l buffer jew li l-utent ikun ittajpjat. Jekk inti stajt ma bbenefikawx dan qabel, inti tista 'tispeċifika li varjabbli bħal int huwa mhux iffirmat, li kif tissuġġerixxi l-isem, ifisser li huwa mhux negattivi, u għaliex kieku I qatt trid li jolqot tispeċifika li int mhix sempliċement int, iżda huwa ta 'int mhux iffirmat? Huwa int mhux negattiv. X'tagħmel l-[inaudible] jfisser? UDJENZA: Huwa jiddeskrivi ammont ta 'memorja li tista' tkun [inaudible]. DAVID Malan: Yeah. Mela jekk jien ngħid mhux iffirmat, dan huwa attwalment giving you waħda daqsxejn ta 'memorja extra u jidher tip ta 'iblah, imma jekk inti jkollhom waħda daqsxejn ta 'memorja addizzjonali, li ifisser li inti għandek doppju Valuri inti tista jirrappreżentaw, għaliex jista 'jkun ta' 0 jew 1. Allura awtomatikament, l-int tista 'tkun bejn wieħed u ieħor negattiv 2 biljuni it-triq kollha sa pożittiv 2 biljuni. Dawk huma firxiet kbar, iżda huwa għadu tip ta 'ħela jekk inti biss jimpurtahom daqsijiet, li biss intuwittivament għandhom ikunu non-negattiv jew pożittiva jew 0, tajjeb allura, għaliex huma inti ħela 2 biljuni valuri possibbli għal numri negattivi jekk int qatt ser tuża minnhom? Allura billi qal mhux iffirmat, issa int tista tiegħi jkun bejn 0 u madwar 4 biljun. Allura hawnhekk biss int C għal raġunijiet aħna mhux se jsibu rwieħhom biss issa kif għaliex huwa ta 'int minflok ta 'char, iżda hawnhekk huwa l-gist ta 'dak li għaddej fuq, u xi wħud minnkom jista 'jkun bl-użu, per eżempju, il- funzjoni fgetc anki fil PSet erba jew wara, aħna ser tara għal darb'oħra fl problema stabbiliti ħamsa, fgetc huwa sbieħ għaliex l-isem tip ta ', tip ta' arcanely jissuġġerixxi, huwa funzjoni li gets karattru u għalhekk, x'hemm fundamentalment differenti dwar dak li aħna qed tagħmel fil GetString hija aħna ma tkunx qed tużah scanf bl-istess mod. Aħna biss creeping tul pass-pass fuq x'ikun l-utent ikun ittajpjat fil, għaliex nistgħu dejjem jalloka wieħed char, u għalhekk nistgħu dejjem sikur tħares lejn char wieħed fi żmien, u l-magic jibda jiġri hawn. Jien ser iscroll biex -nofs ta 'din il-funzjoni biss biex jintroduċi fil-qosor din il-funzjoni. Ħafna bħal hemm funzjoni malloc, hemm funzjoni realloc fejn realloc ihallik jirriallokaw blokki ta 'memorja u jagħmilha akbar jew iżgħar. Istorja sakemm qasir u ma mewġa ta 'naħa tiegħi għal-lum, jafu li dak li GetString qed tagħmel huwa huwa sort tal magically tkabbir jew jiċkienu l buffer kif l-utent tipi fil string tiegħu jew tagħha. Mela jekk it-tipi utent ta ' string qasir, dan il-kodiċi biss talloka biżżejjed memorja li jitwaħħal il-sekwenza. Jekk l-utent iżomm ittajpjar kif I ma kien għal darb'oħra u darb'oħra u għal darb'oħra, ukoll, jekk il- buffer inizjalment dan big u l-programm jirrealizza, li stenna minuta, jien l-ispazju, li għaddej biex tirdoppja id-daqs tal-buffer u mbagħad doppju tad-daqs tal-buffer u l-kodiċi li ma l-irduppjar, jekk inħarsu lejn din here, huwa biss dan għaqlija one-liner. Inti tista 'ma raw dan sintassi qabel, imma jekk inti tgħidli star ugwali, dan huwa l-istess ħaġa bħat qal drabi kapaċità 2. Allura hija biss iżomm irduppjar il-kapaċità tal-buffer u mbagħad javżak realloc li tagħti innifsu li l-memorja ħafna aktar. Issa, bħala twarrib, hemm huma funzjonijiet oħra fil hawn li aħna mhux se tħares lejn xi dettall minbarra li juru fil GetInt, nużaw GetString fil GetInt. Aħna tiċċekkja li mhuwiex null, li, irtirar, huwa l-valur speċjali li ifisser xi ħaġa li marret ħażin. Aħna tal-memorja. Aħjar tiċċekkja għal dan. U nerġgħu lura valur sentinella. Imma jien ser tiddifferixxi għall-kummenti dwar għaliex u mbagħad nużaw dan ku ta scanf imsejħa sscanf u jirriżulta li scanf sscanf, jew spag, ihallik tagħti ħarsa lejn il-linja li l-utent ikun ittajpjat fi u tavżak janalizzah essenzjalment u dak jien tagħmel hawnhekk huwa jien javżak sscanf, tanalizza ikun x'ikun l-utent għandu ttajpjata u kun żgur% i, hemm huwa integer fiha, u aħna mhux se jsibu rwieħhom illum eżattament għaliex hemm ukoll a% c hawn, iżda li fi ftit kliem jippermetti us biex tiskopri jekk l-utent ikun ittajpjat xi ħaġa fittizji wara n-numru. Allura r-raġuni li GetInt u GetString jgħidlek biex retry, retry, retry huwa minħabba kollha ta ' dan il-kodiċi konna bil-miktub, Huwa tip ta 'tħares lejn input-utent fit-teħid ċert li huwa kompletament numerika jew huwa ta 'floating attwali valur tal-punt jew bħalhom, jiddependi fuq liema valur funzjoni inti qed tuża. Whew. KOLLOX SEW. Dan kien f'gidma imma l-punt hawnhekk huwa li r-raġuni kellna dawk ir-roti ta 'taħriġ dwar huwa minħabba fl-inqas livell, hemm biss tant affarijiet li tista 'tmur ħażin li ridna li preemptively jimmaniġġaw dawk l-affarijiet ċertament fil- ġimgħat kmieni tal-klassi, iżda issa ma PSet erba 'u PSet ħames u lil hinn se tara li huwa aktar unto inti imma wkoll int aktar kapaċi biex jissolvew dawk tipi ta 'problemi yourself. Kwalunkwe mistoqsijiet dwar GetString jew GetInt? Yeah? UDJENZA: Għaliex kieku inti doppja il-kapaċità tal-buffer aktar milli biss tiżdied lilha mill-ammont eżatt? DAVID Malan: Tajba kwistjoni. Għaliex kieku aħna doppju tal-kapaċità tal-buffer għall-kuntrarju għal ftit tiżdied it billi xi valur kostanti? Kienet deċiżjoni disinn. Aħna biss iddeċieda li minħabba li hemm tendenza li jkun ftit għaljin għaqli time li jistaqsu is-sistema operattiva għall-memorja, aħna ma tixtieq li jispiċċaw jkollna fis sitwazzjoni ta 'sekwenzi kbar li konna tistaqsi l-OS ġdid u għal darb'oħra u għal darb'oħra u għal darb'oħra fl f'suċċessjoni rapida għall-memorja. Allura aħna biss iddeċieda, xi ftit arbitrarju iżda nisperaw raġonevolment, li, inti taf liema, ejja nipprova nikseb l quddiem ta 'ruħna u biss iżommu irduppjar hekk li aħna jimminimizzaw l-ammont ta 'drabi għandna sejħa malloc jew realloc, iżda sentenza total sejħa fin-nuqqas li wieħed ikun jaf liema utenti tista 'tixtieq li tip. Iż-żewġ modi jista 'jkun diskutibbli. Wieħed jista 'jargumenta tajba. Mela ejja tagħti ħarsa lejn koppja ta 'effetti sekondarji oħra ta' memorja, affarijiet li jistgħu imorru ħażin u għodod li inti tista jużaw biex jaqbdu dawn it-tipi ta 'żbalji. Jirriżulta lilkom kollha, anki jekk check50 ma qallek kemm, ġew miktub Buggy kodiċi peress ġimgħa, anki jekk it-testijiet kollha check50 huma għadda, u anki jekk inti u TF tiegħek huma super kunfidenti li kodiċi tiegħek taħdem kif maħsub. Kodiċi tiegħek ġie Buggy jew difettuż li kollha inti, fl-użu tal-librerija CS50, ġew jnixxu memorja. Inti kont qed tistaqsi s-sistema operattiva għall-memorja fil-maġġoranza tal-programmi inti stajt bil-miktub, iżda inti stajt fatt qatt ma taha lura. You ħadthom imsejħa GetString u GetInt u GetFloat, iżda ma GetString, inti ħadthom qatt imsejħa unGetString jew Agħti String Lura jew bħalhom, iżda Rajna li GetString ma jalloka memorja permezz ta 'malloc jew ta' dan realloc funzjoni, li huwa biss simili ħafna fl-ispirtu, u għadhom, aħna kont qed titlob lill-sistema operattiva għall memorja u l-memorja darb'oħra u għal darb'oħra iżda qatt ma jagħtu lura. Issa, bħala twarrib, jirriżulta li meta programm quits, kollha tal-memorja hija awtomatikament meħlus. Allura huwa ma kienx jittrattaw enormi. Mhuwiex ser jiksru l- IDE jew affarijiet jmajna, Imma meta programmi do ġeneralment nixxija memorja u dawn qed taħdem għal żmien twil. Jekk inti stajt qatt dehru l-ftit stupid bajja ballun fil Mac OS jew l-hourglass fuq Windows fejn huwa tip ta jonqos jew il-ħsieb jew ħsieb jew biss verament jibda li bil-mod għal jitkaxkru, possibbilment ħafna jista 'jkun ir-riżultat ta 'tnixxija memorja. Il-programmaturi li kiteb l-software inti qed tuża titlob lill-sistema operattiva għall-memorja kull ftit minuti, kull siegħa. Imma jekk int taħdem l- software, anki jekk huwa minimizzat fil-kompjuter tiegħek għal sigħat jew ġranet fuq il-għan, inti tista 'tistaqsi għal aktar u aktar memorja u qatt fil-fatt tużaha u għalhekk kodiċi tiegħek jista 'jkun, jew programmi jista 'jiġi jnixxu memorja, u jekk tibda tnixxi memorja, hemm memorja inqas għal programmi oħra, u l-effett huwa li bil-mod kollox stabbiliti. Issa, dan huwa bil-wisq wieħed mill l-programmi l-aktar atroċi ser ikollok opportunitajiet jiddekorri fil CS50 sakemm bħala l-produzzjoni tagħha huwa saħansitra aktar esoteric minn tal clang jew jagħmlu jew kwalunkwe tal-kmand programmi line konna run qabel imma Thankfully, integrati fil-produzzjoni tagħha huwa xi tips utli super li se jkun utli jew għall PSet erba jew ċertament PSet ħamsa. Allura valgrind hija għodda li jistgħu jintużaw biex tfittex għat-tnixxija memorja fil-programm tiegħek. Huwa relattivament sempliċi biex imexxu. Inti tmexxi valgrind u mbagħad, anke għalkemm huwa verbose ftit, sing check tnixxija sing ugwali sħiħa, u mbagħad dot slash u l-isem tal-programm tiegħek. Allura valgrind mbagħad jimxu program tiegħek u fl-aħħar nett tal-programm tiegħek running qabel quits u jagħtik ieħor fil-pront, li għaddej biex tanalizza tiegħek programm filwaqt li huwa kien għaddej u jgħidlek ma inti nixxija kwalunkwe memorja u aħjar għadhom, ma inti touch memorja li ma kienx jappartjeni lilek? Hija ma tistax qabda kollox, imma hija pjuttost tajba fil-qbid aktar affarijiet. Allura hawnhekk eżempju ta 'tiegħi li run dan il-programm, li tellgħu valgrind, fuq programm imsejjaħ memorja, u jien ser li tenfasizza l-linji li huma finalment ta 'interess għalina. Allura hemm anke aktar distrazzjonijiet li stajt mħassra mill-slide. Imma ejja biss tara dak li dan programm huwa kapaċi ta 'tgħidilna. Huwa kapaċi tgħidilna affarijiet bħal tikteb invalidu d-daqs 4. Fi kliem ieħor, jekk inti touch memorja, speċifikament 4 bytes ta 'memorja li m'għandekx ikollok, valgrind jista 'jgħidlek li. Tikteb Invalid-daqs 4. Inti mimsus erba 'bytes li m'għandekx ikollok. Fejn ma inti tagħmel dan? Dan huwa l-sbuħija. Linja c Memorja dot 21 huwa fejn inti invitat up u hu għalhekk huwa utli. Ferm simili GDB, dan jista 'jgħin punt inti fil-iżball attwali. Issa, dan wieħed huwa aktar ftit verbose, jew saħansitra konfużi. 40 bytes fil 1 blokki huma definittivament mitlufa fir-rekord telf 1 ta '1. Xi tfisser? Ukoll, dan ifisser biss inti tlabt għal 40 bytes u int qatt ma taw lura. Inti imsejħa malloc jew inti imsejħa GetString u s-sistema operattiva ħadt 40 bytes, imma int qatt ma meħlusa jew rilaxxat li l-memorja, u li jkun ġust, aħna qatt ma stajt juru kif għandek tagħti lura memorja. Jinstabx hemm super funzjoni sempliċi imsejħa ħielsa. Jieħu argument wieħed, il-ħaġa inti tixtieq li ħielsa jew jagħtu lura, iżda 40 bytes, apparentement, f'dan il-programm intilfu fil-linja 20 ta 'memorja dot c. Mela ejja ara dan il-programm. Huwa super inutli. Hija turi biss dan l-iżball partikolari. Mela ejja tagħti ħarsa. Hawnhekk huwa ewlenin u ewlenin, avviż, sejħiet funzjoni msejħa f u mbagħad jirritornaha. Allura mhux kollha li interessanti. X'jagħmel f do? Avviż I ma jolqot bl prototip. I riedu jżommu l-kodiċi minimi kemm jista 'jkun. So I tpoġġi f 'hawn fuq prinċipali u li l-multa, ċertament, għal programmi qosra bħal dan. Allura f ma jerġax lura xejn u ma M'għandekx tieħu xejn, iżda ma tagħmel dan. Tiddikjara, ħafna bħal fl-eżempju Binky, a pointer imsejjaħ x li għaddej biex jaħżnu l-indirizz ta 'int. Allura dak in-naħa tax-xellug. Bl-Ingliż, liema huwa l- naħa tal-lemin tagħmel? Kulħadd? X'inhu dan tagħmel għalina? Yeah? UDJENZA: [inaudible] darbiet id-daqs ta 'int li huwa 10 darbiet li [inaudible] DAVID Malan: Tajba u let me tqassar. Allura jalloka biżżejjed spazju għal 10 interi jew 10, x'inhu l-daqs ta 'int, huwa l-erba 'bytes, hekk 10 darbiet 4 huwa 40, sabiex dik in-naħa tal-lemin li stajt enfasizzati huwa jagħti me 40 bytes u jaħżnu l-indirizz ta 'l-ewwel byte fis x. U issa fl-aħħar, u hawn fejn dan il-programm huwa Buggy, x'hemm ħażin bil-linja 21 ibbażata fuq li l-loġika? X'hemm ħażin mal-linja 21? Yeah? UDJENZA: Inti ma tistax Indiċi fis x [inaudible]. DAVID Malan: Yeah. I m'għandhomx indiċi fi x bħal dik. Allura b'mod sintattiku, li OK. X'hemm sbieħ huwa, ferm simili inti jista 'jikkura l-isem ta' firxa bħallikieku huwa pointer, b'mod simili inti tista jittrattaw pointer bħallikieku huwa firxa, u so I tista sintattikament ngħid xi ħaġa x parentesi, x parentesi i, iżda l-10 hija problematika. Għaliex? UDJENZA: Għaliex dan huwa mhux ġewwa. DAVID Malan: Mhuwiex ġewwa li blokki ta 'memorja. X'hemm l-akbar valur I għandhom tkun tqegħid f'dawk parentesi kwadri? 9, 0 sa 9. Minħabba indiċjar żero. Allura 0 sa 9 tkun multa. Bracket 10 mhix tajba u iżda, tfakkar għalkemm, kull darba I jidhru li jippruvaw jagħmlu CS50 IDE tiġrifa billi tittajpja valuri fittizji, dan mhux dejjem jikkooperaw, u fil-fatt, inti spiss jiksbu xxurtjati biss minħabba l- sistema operattiva ma avviż li inti dejjem hekk ftit jgħaddu xi blokki ta 'memorja, għaliex inti qagħdu fi ħdan teknikament segment tiegħek, iżda aktar fuq li fi klassi sistemi operattivi, u għalhekk xi ħaġa bħal din tista 'faċilment tmur jinstabux. Program tiegħek qatt se crash b'mod konsistenti imma forsi darba awhile. U hekk ejja jippruvaw valgrind fuq dan, u hawnhekk fejn aħna ser tingħata megħlub mill-output mumentarjament. Sabiex tagħmel memorja nixxija valgrind check ugwali memorja sħiħa dot slash. U hawnhekk għaliex I wegħda dan jisbqu. Hawn dak valgrind, hawn hu dak programmer, xi snin ago- iddeċieda li tkun idea tajba għal ħruġ biex look like. Mela ejja jagħmlu sens ta 'dan. Allura-triq kollha fuq il-naħa tax-xellug naħa għall-ebda raġuni tajba huwa l-ID proċess tal-programm aħna biss run, l-identifikatur uniku għall-programm aħna biss dam. Aħna imħassar li mill l-slide, iżda hemm xi informazzjoni utli hawn. Ejja iscroll sal-quċċata ħafna. Hawn fejn bdejna. Allura huwa mhux kollha li ħafna output. Hawn dak write invalidi daqs 4 dwar linja 21. Well, dak li kien line 21? Linja 21 kien eżattament dan u jagħmel sens li jien fil validament miktub 4 bytes għaliex jien jippruvaw joħolqu dan numru sħiħ, li jista 'jvarja, hija biss jiġri li jkun żero, imma jien jippruvaw li tqiegħed lilha f'lok li ma jappartjenix lili. Barra minn hekk, l hawn, 40 bytes f'wieħed blokok huma definittivament mitlufa fir-rekord 1. Dak għax meta I call malloc hawn, jien qatt ma attwalment ħielsa l-memorja. Allura kif nistgħu jiffissaw dan? Let me imorru quddiem u tkun ftit aktar sikuri u jagħmlu 9 hemmhekk u let me hawn b'xejn x. Dan huwa l-funzjoni l-ġdida għal-lum. Jekk I issa terġa 'tagħmel memorja dot mmejla, ejja jimxu valgrind fuq mill-ġdid, timmassimizza tieqa tiegħi u hit Ikteb. Issa, dan huwa tajjeb. Huma midfuna l-aħbar tajba fil kollha ta 'dan l-output. Blokki kollha munzell kienu ħielsa. Aħna ser terga 'lura għal dak il-borġ huwa, iżda l-ebda tnixxijiet huma possibbli. Allura dan huwa biss ieħor għodda għall kit għodda tiegħek li magħhom inti tista 'tibda biex isibu issa żbalji bħal dik. Imma ejja ara dak aktar tista 'tmur ħażin hawn. Ejja tranżizzjoni issa biex attwalment jsolvu problema. Bħala twarrib, jekk dan se jeħles Ftit ftit ta 'konfużjoni jew ta' tensjoni, dan huwa issa umoristiċi. Yeah. Li pjuttost tajba. Minħabba pointers huma indirizzi u indirizzi huma ġeneralment permezz tal-konvenzjoni miktub bil hexadeċimali. Ha, ha, dan huwa umoristiċi issa. Xorta, so ejja issa attwalment issolvi problema. Dan kien super, super-livell baxx s'issa, u aħna jistgħu attwalment jagħmlu utli affarijiet ma dawn id-dettalji ta 'livell baxx. Allura aħna introdotti ftit ġimgħat ilu l-kunċett ta 'firxa. Firxa kien sbieħ għaliex huwa diffiċli biex tnaddaf kodiċi tagħna għaliex jekk ridna li jiktbu programm ma 'studenti multipli jew ismijiet multipli u djar u dorms u kulleġġi u kollha ta 'dak, nistgħu jaħżen kollox aktar pulit ġewwa ta 'firxa. Iżda tipproponi tnaqqis wieħed ta 'firxa s'issa. Anke jekk inti stajt ma sofra it yourself fi programm, just istintivament, dak li huwa ħaġa ħażina dwar firxa, forsi? Nisma xi murmurs. UDJENZA: Huwa diffiċli Tibdilx id-daqs. DAVID Malan: Huwa diffiċli Tibdilx id-daqs. Inti ma tistax tbiddel id-daqs ta 'firxa, fil-fatt, per se fil C. Tista 'jalloka firxa ieħor, jimxu kollox mill-qadima fil-ġdida, u issa għandhom xi spazju żejjed, iżda mhuwiex simili għal lingwa bħal Java jew Python jew kwalunkwe numru ta 'ieħor lingwi li magħhom xi wħud minnkom jista 'jkun familjari fejn inti tista 'sempliċement ikompli jżid affarijiet ad nauseam sa l-aħħar ta 'firxa. Meta inti għandek firxa ta ' daqs 6, li huwa d-daqs tagħha, u għalhekk ħafna bħall-idea ta 'qabel li jkollhom buffer ta 'ċertu daqs, inti għandek raden barra tal-bieb liema daqs tridu li tkun? Jekk inti raden kbira wisq, int ħela ispazju. Jekk inti raden żgħir wisq, inti ma jista 'jaħżen dik id-data, għall-inqas mingħajr ħafna aktar xogħol. Hekk illum, grazzi għall pointers, nistgħu tibda legatura flimkien custom tagħna stess strutturi ta 'dejta, u b'mod fatt, hawnhekk hija xi ħaġa li jistenna ftit aktar cryptic ewwel daqqa t'għajn, iżda dan huwa dak li aħna ser sejħa marbuta lista, u l-isem tip ta 'tiġbor fil-qosor tagħha it. Huwa lista ta 'numri, jew F'dan il-każ, lista ta 'numri, iżda tista 'tkun lista ta' xejn, imma huwa marbut flimkien permezz ta 'vleġeġ, u ħu raden ma 'dak it-teknika aħna ser tkun tista stitch flimkien, tip simili popcorn b'ħajta, a marbut listi rettangoli hawn? Numri tagħha? X'hemm-karatteristika lingwa sottostanti? UDJENZA: A pointer. DAVID Malan: A pointer. Allura kull wieħed minn dawn vleġeġ hawn tirrappreżenta pointer jew eżatt indirizz. Allura fi kliem ieħor, jekk irrid li jaħżen lista ta 'numri, I tista 'mhux biss jaħżnu jekk irrid l-abbiltà li jikbru u tiċkien istruttura tad-data tiegħi fil-firxa. So I jeħtieġ li jkollhom ftit aktar sofistikazzjoni, iżda tinnota li din stampa tip ta jissuġġerixxi li jekk inti stajt biss ltqajna ftit ħjut konnessjoni kollox flimkien, probabbilment mhuwiex diffiċli li tagħmel spazju bejn tnejn minn dawk rettangoli jew tnejn ta'dawk il-lymph, kif aħna ser tibda titlob minnhom, titpoġġa fi node ġdid, u mbagħad ma 'xi thread ġdida, biss foss-tliet lymph flimkien, l-ewwel waħda, l-aħħar waħda, u l-wieħed li inti biss tiddaħħal fin-nofs. U fil-fatt lista marbuta, b'differenza firxa, huwa dinamiku. Hija tista 'tikber u li tista tiċkien u inti ma għandek tkun taf jew kura minn qabel kemm data kemm int ser tkun ħażna, iżda jirriżulta irridu nkunu ftit attenti dwar kif jimplimentaw din. Allura l-ewwel ejja tikkunsidra kif nimplimentaw waħda minn dawn rettangoli ftit. Huwa faċli li jimplimentaw int. Inti biss jgħidu int nu mbagħad ikollok 4 bytes għal int, imma kif nista 'nikseb xi int, sejħa hija n, u mbagħad pointer, ejja sejħa hija li jmiss. Nistgħu sejħa dawn affarijiet xejn irridu iżda għandu bżonn struttura data tad-dwana. Yeah? UDJENZA: ampersand [inaudible]. DAVID Malan: Allura ampersand aħna se jużaw biex jiksbu l-indirizz ta 'nodu potenzjalment. Iżda għandna bżonn ieħor karatteristika ta 'C sabiex li tagħti me l-kapaċità li joħolqu dan ir-rettangolu tad-dwana, dan il-użanza varjabbli jekk inti se, fil-memorja. UDJENZA: A Istituzzjonjijiet. DAVID Malan: A Istituzzjonjijiet. Recall mill-aħħar ġimgħa, daħħalna Struct, dan il-keyword relattivament sempliċi li tikri us jagħmlu affarijiet bħal dan. C ma jiġu mal-data istruttura imsejħa student. Jidħol ma int u float u char u tali, iżda dan ma jaqax ma 'student, iżda nistgħu noħolqu tip ta 'data student, struttura student, ma 'dan sintassi hawn. U tkun taf tara dan għal darb'oħra u darb'oħra. Allura ma joqogħdu jinkwetaw dwar memorizing l-keywords, iżda l-keyword li l-importanti huwa biss il-fatt li għidna Istituzzjonjijiet u allura aħna hija imsejħa student u ġewwa tal-istudent kien l-isem u dar jew dorm jew bħalhom. U hekk issa llum, ejja tipproponi dan. Stajt miżjud ftit kliem, imma jekk irrid biex jimplimentaw dan ir-rettangolu li l- ltqajna kemm int u pointer, inti taf liema, jien ser tiddikjara Struct imsejjaħ node. Jien ukoll, ġewwa ta 'dan, ser tg li node, dan ir-rettangolu, għandha int u aħna ser sejħa hija nu hija għandha pointer li jmiss. U dan huwa xi ftit verbose, imma jekk inti taħseb dwarha, l-vleġeġ li kienu fl-istampa mument ilu huma ta 'liema tip ta' dejta? Jekk dawn il-vleġeġ qiegħda tipponta liema tip ta 'struttura data? Huwa mhux biss tipponta lejn int per se. Huwa tipponta lejn il- ħaġa rettangolari sħiħa u li ħaġa rettangolari, għidna, huwa msejjaħ node. U hekk aħna tip ta 'għandekx recursively jiddefinixxu tali dan li node, aħna għandu ngħidu, se jkun fiha int imsejħa n u pointer imsejjaħ jmiss u l- tip ta 'struttura data li għaliha li punti ta pointer hija apparentement se tkun node Struct. Allura dan huwa annoyingly verbose u biss sabiex ikunu pedantic, r-raġuni għaliex ma nistgħux biss jgħidu dan, li franchement jistenna ħafna aktar leġġibbli, huwa minħabba irtirar li C taqra affarijiet fuq għal isfel, xellug għal-lemin. Mhuwiex sakemm aħna jiksbu l-virgola li l-node keyword fil-fatt teżisti. Mela jekk irridu li jkollna dan it-tip ta ' referenza ċiklika ġewwa tad-data istruttura, għandna nagħmlu dan, fejn ngħidu node Struct fil-quċċata, li tagħtina mod itwal ta 'jiddeskrivi dan ħaġa, allura ġewwa ngħidu node Struct, u mbagħad fl-aħħar linja ngħidu, id-dritt, C, mill-mod, biss sejħa dan kkritikat kollu ħaġa node u stop użu tal-Struct keyword għal kollox. Allura dan huwa biss tip ta 'sintattiku trick li finalment tikri us joħolqu xi ħaġa li jidher eżattament bħal dan. Mela jekk nassumu issa nistgħu jimplimentaw dan ħaġa fis-C, kif do we attwalment tibda jaqsmu dan? Ukoll, fil-fatt, kollha għandna tagħmel hu jtenni mix-xellug għal-lemin u biss tip ta 'daħħal lymph nodes jew iħassar jew tfittxija għal affarijiet fejn irridu, iżda biex isir dan, ejja imorru quddiem u jagħmlu affarijiet ftit aktar reali għaliex dan kien super-livell baxx s'issa. Kieku xi ħadd litteralment tixtieq li tkun l-ewwel? KOLLOX SEW. Come fuq up. X'hemm isem tiegħek? DAVID: David. DAVID Malan: David. Għandi pjaċir. Me wisq. Kull dritt. U għandna bżonn numru 9. Mhux tajbin daqs l-ewwel, forsi. OK, numru 9. A numru 17, jekk jogħġbok. Let me jmorru lura ftit farther. Numru 22, jekk jogħġbok, u kif madwar farther lura jekk I tista 'tara l-ebda idejn ma 'l-dawl jew l-ebda. Xi ħadd l-jiġu volontarju hemm dritt. Do inti tixtieq li toħroġ? Driegħ tiegħek sfurzat jogħla. OK, 17. 22. 26 huwa jinżlu. Would xi ħadd ieħor simili li forcefully-- Come on up. Voluntier attwali. Allura malajr ħafna, jekk inti guys tista 'tirranġa yourselves bħad il-lymph fuq l-iskrin. Grazzi. U tkun taf tkun 26. Introduzzjonijiet kollha dritt u ta 'malajr. Hekk jien David u inti wkoll? DAVID: David. DAVID Malan: U int? Jake: Jake. SUE: Sue. ALEX: Alex. RAPHAEL: Raphael. TAYLOR: Taylor. DAVID Malan: Taylor. Eċċellenti. Allura dawn huma voluntiera tagħna għal-lum u jimxi 'l quddiem u l-bidla ftit il-mod, u biss jimxi 'l quddiem u jżomm azjenda numri tiegħek kif int jew tiegħek ewwel sinjal u l-użu tax-xellug tiegħek, imorru quddiem u biss jimplimentaw dawn vleġeġ, biss sabiex naħa tax-xellug tiegħek huwa litteralment tipponta lejn kwalunkwe inti għandu punt lejn, u tagħti lilek innifsek xi kamra b'tali mod li nistgħu viżwalment tara idejk attwalment tipponta, u inti tista 'biss il-punt tip ta 'mill-art huwa multa. Allura hawnhekk għandna lista marbuta ta 'wieħed, tnejn, tlieta, erba ', ħames lymph inizjalment, u avviż għandna dan speċjali pointer fil-bidu li l- ċavetta għaliex għandna biex iżommu kont tal-lista tul kollu b'xi. Dawn guys, anki jekk dawn qed xellug għal-lemin, lura lura fil-memorja, huma jkunu effettivament jistgħu jkunu kullimkien fil-memorja tal-kompjuter. Allura dawn guys tista 'tkun wieqfa kullimkien fuq l-istadju u li l-multa, sakemm dawn qed fatt li tipponta lejn xulxin, iżda li żżomm affarijiet nadif u sempliċi, aħna ser biss tiġbed minnhom xellug għal-lemin simili dan, imma jista 'jkun hemm lakuni kbar bejniethom ta'dawk il-lymph. Issa, jekk irrid li attwalment daħħal xi valur il-ġdid, ejja imorru quddiem u tagħmel dan. Għandna l-opportunità issa li jagħżlu node ieħor. Say ejja tibda bl mallocing 55. Would xi ħadd f'moħħu jkunu malloc? OK, jaqgħu fuq up. X'hemm isem tiegħek? RAINBOW: Rainbow. DAVID Malan: Rainbow? Kull dritt. Malloc Rainbow. Come fuq up. Allura issa għandna nistaqsu lilna nfusna algorithmically fejn nistgħu npoġġu 55. Allura lkoll nafu, ovvjament, fejn hi probabbilment tappartjeni jekk aħna qed tipprova biex iżommu din magħżula u jekk inti guys tista 'tieħu waħda pass lura hekk aħna ma jaqgħux off l-istadju, li tkun kbira. Allura fil-fatt, Rainbow, tibda minn hawn miegħi, għaliex aħna bħala l-kompjuter issa jista tara biss varjabbli waħda kull darba. Mela jekk dan huwa l-ewwel node. Avviż huwa ma node, hu biss pointer, u hu għalhekk li hu mfassal biex ikun biss id-daqs ta 'pointer, mhux wieħed minn dawk rettangoli sħiħa. Allura aħna qed tmur biex jiċċekkjaw f'kull iterazzjoni hija 55 inqas minn 9? No Hija 55 inqas minn 17? No Inqas minn 22? Inqas minn 26? Inqas minn 34? U hekk issa, ovvjament Rainbow jappartjeni fl-aħħar. Allura biex tkun ċara, u liema kien l-isem tiegħek, Taylor? TAYLOR: Taylor. DAVID Malan: Allura fost l Taylor naħa tax-xellug u l-idejn Rainbow hawn, li idejn jeħtieġ li jiġi lejn dak fil tordna li daħħal 55 fis din il-lista? What do we bżonn tagħmel? Yeah? UDJENZA: idejn Taylor jeħtieġ li jiġi xellug. DAVID Malan: Eżattament. Allura ddaħħal node fit-tarf tal-lista huwa pjuttost sempliċi għaliex Taylor biss għandu punt, minflok fil-art jew aħna ser sejħa hija nulla, null huwa tip tan-nuqqas ta 'pointer jew speċjali żero pointer, int jmorru għall-punt ma xellug tiegħek idejn fil Rainbow u mbagħad Rainbow, Fejn xellug tiegħek naħa probabbilment punt? Down. Mhuwiex tajjeb jekk naħa tagħha huwa tip tal tipponta off hawn jew tip ta 'kwalunkwe li mod. Li tkun ikkunsidrata valur żibel, imma jekk hi punti li xi valur magħruf, aħna ser sejħa hija żero jew null, li OK għaliex għandna tul f'dan u nafu l-lista issa hija kompluta. Allura x'hemm ieħor każ relattivament sempliċi? Nistgħu malloc 5? Come fuq up. X'hemm isem tiegħek? Tiffany: Tiffany. DAVID Malan: Im sorry? Tiffany: Tiffany. DAVID Malan: Tiffany. Kull dritt. Tiffany ġie malloced mal-valur 5. Come fuq up. Dan wieħed relattivament faċli wisq, iżda ejja jikkunsidraw ordni ta 'operazzjonijiet issa. Kien pjuttost faċli mal Taylor fl-aħħar. Numru 5 huwa naturalment anqas minn 9, u hekk aħna David, għandna Tiffany, u dak li kien l-isem tiegħek? Jake: Jake. DAVID Malan: Jake. Tiffany, Jake, u David. Li sekondaman għandhom ikunu aġġornati ewwel? What do inti tixtieq li tagħmel hawn? Hemm modi possibbli koppja, iżda hemm ukoll modi aktar ħżiena wieħed jew. UDJENZA: Tibda bl leftmost. DAVID Malan: Tibda bil-leftmost. Min hu l-leftmost hawn allura? UDJENZA: L-ewwel. DAVID Malan: OK. Allura tibda bl-ewwel u fejn taħseb tixtieq li taġġorna l-idejn David li tkun? UDJENZA: Lejn l-5. DAVID Malan: OK. Allura David, punt ħamsa jew Tiffany hawn, u issa? UDJENZA: Tiffany juri l-9? DAVID Malan: Perfect, ħlief l Binky kap biss tip ta 'apostrofu, right? Minħabba x'hemm ħażin ma din l-istampa litteralment? UDJENZA: Xejn hija li tipponta. DAVID Malan: Xejn huwa tipponta lejn Jake issa. Imxejna litteralment orfni 9 u 17, u konna litteralment nixxew kollha ta 'dan il-memorja, għaliex mill aġġornament naħa David ewwel, li l- multa sa fejn huwa korrett tipponta lejn Tiffany issa, imma jekk l-ebda wieħed kellu l- previżjoni għall-punt fil Jake, allura aħna tilfu il totalità ta 'dik il-lista. Mela ejja jħoll. Allura li kienet ħaġa tajba li vjaġġ fuq imma ejja jikkoreġu issa. X'għandi nagħmlu ewwel minflok? Yeah? UDJENZA: Tiffany għandu jindika fil-9? DAVID Malan: I ma tistax nikseb li qrib lilek. Min għandu punt fil-9? UDJENZA: Tiffany. DAVID Malan: Kull dritt. Allura Tiffany għandu l-ewwel punt fuq l-9. Allura Tiffany għandhom jieħdu fuq valur identiku li David, li tidher żejda għal mument, iżda li l-multa għaliex issa, it-tieni pass, nistgħu taġġorna naħa David punt fuq Tiffany, u mbagħad jekk aħna biss tip ta 'teknoloġiji nodfa affarijiet up bħallikieku dan huwa tip ta 'rebbiegħa simili, issa li l-inserzjoni korretta. Allura eċċellenti. Allura issa aħna qed kważi hemm. Ejja jdaħħal waħda finali valur bħall-valur 20. Jekk nistgħu malloc voluntier finali wieħed? Come fuq up. Allura dan wieħed l-ftit aktar delikata. Imma verament, il-kodiċi aħna qed miktub, għalkemm verbalment, huwa biss simili li jkollhom mazz tal jekk il-kundizzjonijiet issa, id-dritt? Kellna kundizzjoni verifika jekk ikun jappartjeni fl-aħħar, forsi l-bidu. Għandna bżonn xi tip ta 'loop biex isibu l-post fin-nofs. Mela ejja tagħmel dan ma 'dak l-isem tiegħek? ERIC: Eric. DAVID Malan: Eric? Eric. Għandi pjaċir. Allura aħna għandna 20. Inqas minn ħamsa? No Inqas minn disa? No Inqas minn 17? No KOLLOX SEW. Huwa jappartjeni hawn u ismijiet tiegħek mill-ġdid huma? SUE: Sue. DAVID Malan: Sue. ALEX: Alex. DAVID Malan: Sue, Alex, u? ERIC: Eric. DAVID Malan: Eric. Li f'idejha bżonn tikseb aġġornati ewwel? UDJENZA: Eric. KOLLOX SEW. Allura s Eric għandu jiġi lejn fejn? Fil-22. Tajba. U issa xi jmiss? Sue jista imbagħad il-punt fuq Eric u issa, jekk inti guys biss tagħmel xi kamra, li huwa multa viżwalment, issa aħna ghamilt l-inserzjoni. Mela ejja issa jeżamina xi kwistjoni, iżda nirringrazzjak tant għall-voluntiera tagħna. Isir ħafna tajjeb. Inti tista 'żżomm dawn, jekk inti tixtieq. U aħna għandna rigal firda sabiħ jekk youd kull nieħu ballun stress. Let me biss tgħaddi din isfel. Allura x'inhi l-takeaway ta 'dan? Dan jidher li aqwa sakemm għandna issa introduċiet alternattiva għall- firxa li mhix daqshekk limitata għal firxa ta 'ċertu daqs fiss. Huma jistgħu jikbru b'mod dinamiku. Iżda ferm simili Rajna fil-ġimgħat passat, aħna qatt tikseb xejn b'xejn, bħal żgur hemm kompromess hawn. Allura ma 'rasu ta' marbut lista, hija din dinamiżmu? Din il-ħila biex jikbru u franchement, aħna seta 'jsir ħassar u aħna tista 'tiċkien kif meħtieġ. Liema prezz aħna tħallas? Darbtejn daqs ispazju, l-ewwel nett. Jekk inti tħares lejn l-istampa, m'għadhiex am I ħażna lista tan-numri interi. Jien ħażna lista ta interi plus pointers. Hekk jien irduppjar tal-ammont ta 'spazju. Issa, forsi li mhux tali a big deal 4 bytes, 8 bytes, iżda tista 'ċertament żid up għal settijiet ta 'data kbar. X'hemm tnaqqis ieħor? Yeah? UDJENZA: Irridu travers minnhom wieħed mill-wieħed. DAVID Malan: Yeah. Irridu travers magħhom wieħed mill-wieħed. Inti taf liema, aħna taw up dan super Karatteristika konvenjenti ta 'faxxa kwadru notazzjoni, aktar sew magħrufa bħala t'aċċess bl-addoċċ, fejn nistgħu biss jaqbżu ma 'element individwali imma issa jekk I xorta kellhom voluntiera tiegħi hawn, jekk jien ridt li jsibu l- numru 22, ma nistax biss jaqbżu għal xi ħaġa xi ħaġa parentesi. Għandi li tħares fuq il-lista, ħafna bħal eżempji tiftix tagħna linearment, biex issib in-numru 22. Allura aħna jidhru li jkunu ħallsu prezz hemmhekk. Iżda nistgħu madankollu isolvu problemi oħra. Fil-fatt, let me jintroduċu biss ftit visuals. Mela jekk inti kont qed isfel sa Mather tal Dining Hall reċentement, inti ser tfakkar li tagħhom munzelli ta 'dixxijiet bħal dan, aħna mislufa dawn mill Annenberg qabel klassi. Allura dan munzell ta 'dixxijiet, għalkemm, huwa rappreżentattiv fil-fatt ta 'struttura data xjenza tal-kompjuter. Hemm struttura data fix-xjenza tal-kompjuter magħrufa bħala munzell li ħafna nicely jippresta ruħu għal eżattament dan viżwali. Mela jekk kull wieħed minn dawn trejs mhix trej iżda bħal numru u xtaqt taħżen numri, I tista 'tpoġġi waħda stabbiliti hawn, u I tista 'tpoġġi ieħor stabbiliti hawn, u tkompli stivar numri fuq quċċata ta 'xulxin, u x'hemm potenzjalment utli dwar dan hija li x'inhu l-implikazzjoni din l-istruttura data? Liema numru nista iġbed ewwel l-aktar konvenjenti? L-aktar reċentement poġġiet wieħed fuq hemmhekk. Allura dan huwa dak li aħna kieku ssejjaħ fil xjenza tal-kompjuter struttura data LIFO. Aħħar li l-ewwel out. U aħna ser tara qabel twil għaliex li jista 'jkun utli iżda għal issa, biss tikkunsidra l-proprjetà. U huwa tip ta 'stupid jekk taħseb dwar kif il-sala dining tagħmlu. Kull darba li trays nodfa u tpoġġi dawk reëenti fuq, inti jista 'jkollhom qabel nadif iżda eventwalment ħafna maħmuġ u trab trej fil-qiegħ nett attwalment jekk int qatt jasal sal-qiegħ ta 'dak munzell, għaliex inti biss iżommu tqegħid l-ġodda u dawk nodfa fuq quċċata ta 'dan. L-istess ħaġa jista 'jiġri f'supermarkit wisq. Jekk għandek każ display ta 'ħalib u kull CVS darba jew min gets aktar ħalib, inti biss shove l ħalib diġà għandek għall-dahar u inti tpoġġi l-ġodda bil-quddiem, int se jkollhom xi pretty diżgustanti ħalib fl-aħħar tal-istruttura tad-data, għaliex dan huwa dejjem fil-qiegħ jew ekwivalenti huwa dejjem fuq wara. Imma hemm mod ieħor biex jaħsbu dwar lining up data u per eżempju, dan. Jekk int wieħed minn dawk in-nies li jħobb għal-linja up barra ta 'ħwienet Apple meta prodott ġdid jidħol out, int probabilment mhux permezz ta 'teknika munzell istruttura għaliex inti se jaljenaw kulħadd li huwa lining sa tixtri xi ġugarell il-ġdid. Pjuttost, int probabilment tuża liema tip ta 'struttura data jew liema tip ta 'sistema fid-dinja reali? Nisperaw huwa linja, jew aktar sew jew aktar British simili, kju. U jirriżulta kju hija wkoll istruttura tad-data fix-xjenza tal-kompjuter, iżda kju għandha ħafna proprjetà differenti. Mhuwiex LIFO. Aħħar li l-ewwel out. Alla jipprojbixxu. Huwa minflok FIFO. Ewwel, l-ewwel barra. U li l-ħaġa tajba għall-ġustizzja fini " ċertament meta int inforra up super kmieni fil-għodu. Jekk ikollok hemm l-ewwel, inti tixtieq li toħroġ l-ewwel kif ukoll. U hekk kollha ta 'din id-dejta istrutturi, kjuwijiet u stacks u għenieqed ta 'oħrajn, jirriżulta inti tista 'taħseb ta' dan bħala biss firxa. Dan huwa firxa, forsi daqs fiss 4, iżda d jkun it-tip ta 'sbieħ jekk nistgħu biss pile trejs kważi infinitament tall jekk aħna jkollhom li trejs ħafna jew numri. Allura forsi rridu jużaw lista marbuta hawn, iżda l-kompromess se tkun potenzjalment li għandna bżonn memorja aktar, jieħu ftit aktar ħin, iżda aħna ma jillimitawx l-għoli tal-munzell, ferm simili display każ Mather ta jista jillimitaw id-daqs tal-munzell, u għalhekk dawn huma deċiżjonijiet ta 'disinn jew għażliet disponibbli lilna finalment. Allura ma din id-data istrutturi, konna beda jaraw limiti ta 'fuq ġodda potenzjalment fuq dak li qabel kien super fast u fejn aħna ser jitilqu off llum u fejn aħna ser tama li tikseb sa hija l-Erbgħa, aħna ser tibda tħares lejn data struttura li tikri us tfittxija permezz ta 'data fi log aħħar ħin mill-ġdid. U rajna li, jfakkru, fl zero ġimgħa u wieħed bil-tfittxija binarju jew aqsam u conquer. Huwa li ġejjin lura u aħjar għadhom, l-Grail qaddis għal dan l-erbgħa se jkun li toħroġ il- istruttura tad-data li timxi verament jew teoretiku fil ħin kostanti, fejn ma jimpurtax kemm miljuni jew biljuni ta 'affarijiet għandna fl-istruttura tad-data, se jqarrbuna ħin kostanti, forsi pass wieħed inkella tnejn jew 10 passi, iżda numri kostanti ta 'passi li tfittex li struttura tad-data. Li fil-fatt se tkun l-Grail qaddis iżda aktar fuq li nhar l-Erbgħa. Ara ya imbagħad. [Daqq tal-mużika]