>> [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]