ANDI Peng: Allt í lagi. Velkomið að viku fjögurra kafla. Það er fallegur dagur hér í New Haven þannig að ég held virkilega dreifður dreifingar krakka sem gekk mér fyrir lið í dag, þakka þér. Svo fljótt, rétt áður en við byrja, dagskrá í dag. Við erum að fara að fara yfir a stuttar tilkynningar. Við hafa a raunverulega wacky áætlun koma upp á næstu tveimur vikum eða svo þannig að við erum að fara að fara yfir það. Í öðru lagi, ég veit Uppáhalds topic-- allra Ég er viss um að þetta brætt hugann á fyrirlestri, ekki hafa áhyggjur, Ég samt svona fæ það ekki. Það er fínt. Það var brandari. Ég reyndar fá það. En ég mun ganga úr skugga um að þú krakkar fá það líka. Þannig að við erum að fara að eyða virkilega, virkilega gott magn tíma í að tala um músina dag. Eins og þú geta sjá, Candy er tala er mikil í dag. Við erum í raun að fara að halda that-- já, það er rétt. Halda áfram að nota nammi. Ég ætla að fara þá í kring núna. Engar áhyggjur. Við erum að fara að virkilega reyna að halda blóðsykur fólks upp vegna þess að heilinn er að fara að brenna sumir súrefni í dag vegna ábendingum eru mjög, mjög erfitt. Þá erum við að fara að tala um minni stjórnun hvers konar er í sama ríki. Og við erum að fara að flytja á utanáskrift og skrá I / O sem eru bara setningafræði, gott hlutir sem við ættum að tala um. Og þá loks, ég er að fara að aftur að reyna að fara eins og 10, 15 mínútur fyrir pset4. Það er vegna í nokkra daga þannig að við erum að fara að í raun eins konar gefa þér nokkrar góðar vísbendingar ef þú þegar fengið byrjaði á því. Cool. OK. Svo sumir tilkynningar fyrir þessa komandi viku. Flokkun. Ég veit reyndar ekki á þetta lið hvernig margir af þú krakkar eru reyndar í mínum section-- í lagi þarna? OK. En, fyrir þá sem eru í kafla mínum, bara nokkrar athugasemdir um flokkun. First, mjög gott starf af athugasemd. Þau ykkar sem ekki tjá ekki, þú veit hver þú ert því þú sennilega nokkur stíl stigum dinged þessari viku. Bara ganga úr skugga um að í öllum þínum forrit bæta við nokkrum athugasemdum. Really, stíll er mjög auðvelt að fá réttar stig og umfangi. Svo fyrir okkur, bara gera viss um að þú ert góður um að bæta við stutta lýsingu á öllum áætlanir þínar um hvað þú ert að gera. Secondly-- þetta er mikið mál fyrir a einhver fjöldi af the TAS á síðasta week-- svo vertu viss um að þú ert að senda til rétt mappa með rétt heitir forrit. Og ástæðan fyrir því að við biðjum fyrir þessu er vegna þess að við, í tengslum við yfirferð, í raun að keyra skriftuna á þinn númer sem niðurhal sjálfkrafa öll psets þínum, rekur Nákvæmni próf á þeim öllum, og þá innsendingar skorar beint inn í gradebook. Hins vegar, á hverjum stað, ef þú heitir program rangt, það skrúfur upp allt forrit fyrir alla. Og svo, löglega, þetta fallega handrit sem við höfum skrifað sem gerir þetta allt fyrir okkur, alveg hrun ef þú ert ekki program sem heitir rétt. Svo bara senda á réttan möppu, hafa þá heitir rétt, og þá er lífið gott. Ég fæ psets til baka til þið eldri vegna þess að ég fá að bekk þá fljótt. Já. OK. Og einnig við erum að fara að tala about-- Yale hefur virkilega, virkilega Wacky áætlun í þessum næstu tveimur vikum. Svo þeir af ykkur á Harvard, þetta gildir ekki. En fyrir okkur kæri krakkarnir á Yale og við höfum eitthvað sem kallast haust break-- miður, Harvard-- þar sem við höfum fimm daga frí í skólanum. Og á meðan þetta er yndislegt, það konar boðberi upp pset hrynjandi okkar vegna psets eru vegna Fimmtudagur, föstudögum. Og svo ef við erum ekki hér Fimmtudagur, Fridays, við getur ekki vinna fyrir ykkur vegna á fimmtudaginn, föstudögum. Svo það sem við erum að fara að gera is-- við erum eins 99% viss um að þetta er það sem er að gerast, there mega vera sumir breyta en ég held að það er subtle-- er að við erum að fara að have-- þessari viku er eðlilegt. Þannig að við höfum okkar hluti á Þriðjudaga eftir skrifstofutíma gegn the hvíla af the vika og þá er pset4 vegna á föstudag. Þá, eins og þið vita allt, sem Ég minnti ykkur í síðustu viku, við höfum quiz okkar 0 að koma upp á miðvikudag. Og svo, að vera nemandi sjálfur, Ég veit að mjög fáir af þér krakkar vilja raunverulega vera að vinna á pset5 tvo daga áður en prófið þitt. Svo það sem við erum að fara að sennilega á endanum að gera er, sem mánudagskvöld, við erum að fara að í raun, frá 5:30 til 7:00, hafa stutt yfirlit fundur um málefni sem falla. Óljóst hvort það er endurskoða setu eða Q & A. Það verður að vera einhvers konar endurskoðun form sem við munum ná Sum efni viðkomandi fyrir ykkur. Og þá mánudagur og þriðjudagur nætur af þeirri viku frá 8:00 til 11:00, við erum að fara að hafa skrifstofutíma. Þeir Viðtalstími verður mest líklega vera meira bara koma í, spyrja TAS spurningum þínum varðandi allir hugtök sem þú ert óviss um, og þeir konar fara yfir með þér og endurskoðun hugtök fyrir próf. Quiz 0, ef þú ert í Mánudagur, Miðvikudagur kafla, verður miðvikudag á class-- á miðvikudag á bekknum. Og svo ef þú ert í Þriðjudagur, Fimmtudagur kafla, Einnig verður á bekknum í kvöld. Þú getur í raun ekki valið hver þú fara til. Ef þú ert a Mánudagur, Miðvikudagur, þú þarft að fara að miðvikudag. Ef þú ert á þriðjudag, fimmtudag þú þarft að fara til fimmtudags. En þá um nóttina, okkur yndisleg starfsfólk, mun hafa risastór quiz einkunnakerfi aðila í sem við munum fá stig til baka til þín um nóttina. Klukkan hvað? Óljóst, hver veit, en það mun aftur til þín innan 24 klst svo að þið vonandi hafa sumir endurgjöf eftir föstudaginn. Og þá höfum við mjög wacky viku. Svo er pset5 einn af Erfiðasta psets ársins. Svo miður krakkar. Það sem við erum að fara að reyna að gera er að við erum að fara að hafa sumir raunverulegur stuðningur sem helgi. Vegna þess, eins og þú krakkar geta sjá, pset er vegna áður falla hlé. Við höfum ekki stuðning þið á haust hlé og svo við í raun eins konar langar að setningu þetta sem, við skulum fá þetta yfir með, við skulum vinna virkilega, virkilega erfitt Næstu tvær vikur, fá þetta próf og bæta við þessum tveim psets gert með og þá þú krakkar hafa a ágætur slakandi sjö daga án þess að hugsa um CS. Svo í röð fyrir það að gerast, við erum líklega að fara að flytja kafla minn að Sunnudagur hádegi. Það verður tekið svo enginn áhyggjur ef þú getur ekki komið. En netinu tökur munu vera þar og aðgengileg svo að þið hafið Sunnudagur, Mánudagur, þriðjudaga, til að vinna á pset5. Og þá er það haust brjóta og ekki CS og þá við komum til baka og aftur þess í mala. En það er að fara til vera a yndisleg viku falla brot og við viljum virkilega að gera það eins og streitu ókeypis fyrir alla og hægt er er þess vegna sem við fluttum í pset að vera vegna áður falla hlé fremur en eftir. Vegna it's-- Ég meina, mér finnst svona eins og það sigraði í þeim tilgangi að hafa frestur eftir fall hléi ef það er enginn stuðningur engu að síður á haust hálfleik. Svo það er rather-- ég held viljum við leggja áherslu á það núna. Hjartarskinn einhver hafa spurningar um það áætlun? Nokkuð ruglingslegt? Já. Áhorfendur: Eigum við enn fyrirlestur þann 21.? ANDI Peng: Já. Svo á 21., það er að fara að vera fyrirlestur sem er lifandi frá Harvard. Ég veit ekki hvort Davíð er kvikmynda það eða ef hann er í raun fyrirlestra, en það er að fara að vera í boði á netinu fyrir ykkur til að fá aðgang. Svo bara vera viss um að þú móta að klukkutíma út einhvers staðar í haust hlé svo þú krakkar geta skilið upp á þessi fyrirlestur. Já? Áhorfendur: Já. Sorry. Ég fékk hér couple-- ANDI Peng: Engar áhyggjur. Hér taka smá nammi. Áhorfendur: Hey, ég náði því. Svo bara að ágrip, ekki á morgun en Miðvikudagur eftir það, höfum við spurningaleik. ANDI Peng: Rétt. Áhorfendur: Og það er að fara að be-- hvað er snið af spurningakeppni? ANDI Peng: Oh. Þannig að við munum senda út tölvupóst sem nær allt sem meira dýpi. En í raun, það nær bara undirstöðu efni þegar fjallað á fyrri hluta misseris. Við verðum endurskoðun fundur og spurningu og svör svo engar áhyggjur um það. En við munum vera að fara yfir það líka. Áhorfendur: Er það að fara að vera, við koma tölvur okkar og kóða there-- ANDI Peng: Nei Það er að fara að vera þið skrifa og svara spurningum af hendi. Áhorfendur: Oh. ANDI Peng: Þannig að við munum gefa út venjur og efni svo þú krakkar mega vilja til vill fara aftur og umrita Mario af hendi bara til að tryggja að þú krakkar hafa hugmynd um hvernig á að gera það. Vegna þess að stundum þegar þú skrifar í höndunum þig gleyma semikommum og efni og það er mjög slæmt. Áhorfendur: Verður ekki að [inaudible]? Eins og þú ert að fá semíkommu á your-- ANDI Peng: Já og nei. Við munum tala meira í dýpt um hvernig quiz skipulag er og hvernig við ætlum að bekk. En í raun, bara vita að Almennt snið er að fara að vera þú krakkar annaðhvort túlka code-- svara helstu spurningum. Ef ég spurði þig, hvað er bókasafn? Þú krakkar ættu að vita hvað Bókasafnið er og skrifa það niður. Eða ég má segja, skrifa forrit sem prentar Hello World á skjáinn. Þú krakkar vildi skrifa, int main ógilt printf halló heimur semíkommu. Já. Áhorfendur: Svo það er ekki að fara að vera einhvers staðar [inaudible] erfiðleikastig vandans setja? ANDI Peng: Nei Nei Við won't-- já. Skrifaðu heild á leikur 15 í 20 mínútur, fara. Nei, það mun ekki vera. Nei Áhorfendur: OK. Svo er það miðvikudagur. Á þeirri viku við einnig hafa erfiðasta vandamálið sett? ANDI Peng: Nei Svo vandamálið setja það vegna daginn áður falla hlé. The schedule-- email var í raun að senda út 20 mínútur síðan varðandi þetta allt. Svo þið bara athuga tölvupóst. Það verður að vera þar. Já. Engar áhyggjur. Cool. Einhverjar Almennar spurningar um tilkynningar, gæðaflokkun, Skyndipróf, áður en við kafa rétt í ábendingum sem vilja neyta meirihluti kafla tíma okkar í dag? Cool. Allt í lagi. Svo gerði þið horft á alla þessa lovely-- Ég veit ekki hvað þeir kalla það. Málið þar sem claymation blés sig upp vegna þess að það ekki nota músina rétt. Jæja, program er að fara að sennilega blása sig upp ef þú ekki nota ábendingum rétt eins og heilbrigður. Þannig að við erum að fara að gera viss um að gerist ekki. Í dag erum við að fara að gera sumir bendi gaman. Ég ætla að fara yfir það eins vel og ég held að er hægt í litlu tímaramma. En það er bara svo mikið til að ná að ég vil virkilega að þú krakkar, ef þú skilur ekki eitthvað, að ekki bara láta mig halda áfram. Því ef þú ert ekki skilja eitthvað, þú ert líklega ekki að fara að skilja neitt sem ég segi eftir það. Svo vinsamlegast stöðva mig og spyrja spurningu. Vegna þess að það á alls kyns snjókast saman. Eins og leiða ábendingum í minni leiða í öðrum hlutum. Og svo ef þú skilur ekki ábendingum, stoppa mig og við munum reikna það út og lífið verður allt í lagi. Cool. Svo hversu margir af ykkur í fyrirlestri, Davíð nefndi ábendingum, gáfur þínar eins konar breyst Jell-O? Já. Good. Við erum að fara að reyna að de-Jell-O gáfur þínar í dag. Við erum að fara að virkilega markvisst fara í gegnum það nákvæmlega bendillinn er, hvað það gerir, og hvernig við notum þá. Svo allt pointers-- svo venjulega með breytum við höfum verið að nota í erfðaskrá, eins breytur, svo sem heiltölur eða strengi eða fljóta, þeir eru allt í raun gildi úthlutað til þeirra og jafnframt netfang bendir til þess virði. Þannig að ég ætla að draga þetta rétt núna. Við höfum nánast ekkert krít en það er allt í lagi. Svo til dæmis, að jafnaði á þann hátt að við höfum verið að nota breytur er við að búa til nafn breytu af tegund INT, við skulum bara segja. Svo hér höfum við fengið int x og við erum Frumstilli að int til 50. Svo hér í þessari blokk af minni á okkar tölvur við höfum geymt fjölda 50. Svo hvar ábendingum koma inn í leik er að tölvan þín itself-- eins, hér, líkamlega á harða diskinum í RAM computer-- minn það hefur aðeins endanlegt magn af minni. Þú getur ekki bara að halda að geyma hluti allt á hreinu á hreinu og hafa þá alla. Svo leið að við úthluta virk minni að vera fær um að geyma það sem við viljum og aðgang að þeim, með því að hafa ábendingum. Svo ímynda sér í minni þínu, rétt. Ef þetta er RAM á þinn tölva, hefur þú þessa litlu bita eða blokkir eða bæti af minni í which-- þetta eru bara smá blokkir sem hefur verið úthlutað út á harður ökuferð eða RAM á tölvunni þinni, og innan hvers þeirra blokkir þú getur geymt mismunandi hluti. Svo til dæmis, einn array í þessu dæmi hér er eitt bæti sem er sem samanstendur af átta bitum. Talan breytist eftir því stýrikerfi á tölvunni þinni. Til dæmis, hversu mörg ykkar hafa heyrt um 32-bita móti 64-bita rekstri kerfi? Nákvæmlega. Svo er allt að segja er sú að memory-- að leiðin sem tölvan þín stýrir minni er öðruvísi. Sem er hvers vegna það er mjög mikilvægt að skilja hvers vegna minni sig virka frekar en að borga eftirtekt til the númer. Svo við gerum ekki alveg sama hversu stór þessi array er, við þurfum bara að hugsa um hversu stór þurfum int að vera, hversu stór Þurfum við streng að vera, hversu stór er bendi? OK. Svo það er að fara til vera a einhver fjöldi þungur, þétt upplýsingar. Ég ætla að gefa ykkur a par grínisti augnablik léttir hér. Þú krakkar ættu allir að geta að skilja þetta núna. Þar sem við vitum að ábendingum heimilisföng, og þeir eru mismunandi frá breytum. OK. Cool. CS brandara eru bestu, já? Svo leið að við förum um að búa til bendi er mjög sérstakur tegund af setningafræði. Eins með að skapa eitthvað Tegund breytu, það er fara til vera a sérstakur Setningafræði við notum til að búa hana til. Svo þegar lýsa hvaða músina, bendi bara essentially-- Ég held að mikilvægt hluti af ábendingum er að en breytu hefur bæði gildi og heimilisfang, bendi er heimilisfang. Gildi þess er heimilisfang. Svo er það að netfang geymt á annað netfang. Ef það gerir allir skilningarvit. Við munum fara yfir þetta í smáatriðum, en það er almenn form af why-- hvernig prentari er geymt. Svo leið að þú býrð bendi er með því að gera hvað sem tegund gagna sem bendillinn er að fara að vera tilvísanir og then-- með star-- og þá nafn á músina. Svo hér, ef við vildum til að búa til músina sem benti í átt heiltala, og við langaði nafn músina til að vera x, við myndum gera Int stjörnu x. Já? Áhorfendur: Og svo ef Eftirfarandi lína þér gera int x, mun int stjarna x tilgreina staðsetningu á x þú ert að skilgreina eftirá? ANDI Peng: Really góð spurning. Við munum fara yfir þetta í a par skyggnur síðar. Já. Og þá sama með bleikju og sama flýtur. Bara veit að á þessum tímapunkti Við höfum búið til músina, við höfum í raun ekki sett það að jafna neitt ennþá. Við höfum í raun ekki vísað henni. Það sama hér þegar þú býrð til breytu, þú hefur búið til nafn breytu, þú hefur í raun ekki sett gildi við það. Sami hlutur hér. OK. Svo hvernig gera við að setja gildi ábendingum? Það er með því að vísa og dereferencing. Svo leið að við getum vísað a varia-- músina, í raun við aftur heimilisfangið í minni sem breytu er geymt. Þannig að ef ég hefði pointer-- ég teikna þetta þegar við að fá á næstu glæru, en bara veit að raun, sem and-- á merkið og variable-- allt sem gerir er að segja þér heimilisfangið hvar eitthvað er geymt. Og dereferencing er andstæða um það, sem er bara stjarna. Stjarnan gefur bara þér raunverulegt gögn sem eru geymd á þetta netfang. Svo einn gefur þér heimilisfangið geymd á heimilisfang, hinn gefur þér raunverulegt gildi geymt á heimilisfang. Þannig að tveir þeirra gefa þú mismunandi hlutir. Enn og aftur, eru glærur allt á netinu svo engar áhyggjur ef þú krakkar geta ekki afrita þetta niður í tíma. Svo skulum taka a líta þetta dæmi hér. Þannig að við höfum fengið risastór minni array hér, ekki satt? Þar sem við höfum bara blokkir minni, eða bæti af minni, þar sem við getum geymt mismunandi hluti. Segjum bara að þetta eru heimilisfang stig í minni. Svo hvenær þú ert - sjá 0x, allt sem er að segja þér er að Það er sextánskur tölustafir. Eins þið vita allt, tölur væri að byggja á mismunandi stöðvum. Base 10 er hvernig við venjulega túlka tölur. Það er líka stöð 2, sem er tvöfaldur. Og í þessu tilfelli, sextánskur er undirstaða 16. Það er bara önnur leið til að segja frá núll til 10-- eða núll til níu og þá einnig A, B, C, D, E, F. Einnig vísar mismunandi númer. Davíð fór yfir þetta í fyrirlestri í stutta stund. Ef þið eru rugla, bara Google það. Það er í raun einfaldar leiðir til að læra hvað sextánskur stafa er. Allt sem er mjög viðeigandi núna er fyrir þig krakkar að vita að sextánskur tölustafir í C segir you-- sem oftast segir þér að það er bendi. Eða það er netfang. Þannig að í þessu dæmi hér, int x er 5. Við erum að búa til integer-- Afsakið, breytu af tegund heiltala og við erum að virkja það til 5. Svo hér á minni borð okkar, við getum sjá að x er á heimilisfang 0x0 og gildi sem þú hefur geymt inni það er 5. Það ætti skynsamleg fyrir alla, ekki satt? OK. Og þá hvað við höfum gert í annarri línu af kóða er að við höfum búið bendi á int. Það er það int stjörnu bendillinn er að gera. Og það jafngildir því að merkið x er að gefa þér heimilisfangið af einhverju. Svo heimilisfang x í þetta dæmi er 0x0. Og svo að Þetta netfang er varið geymd í þeim músina. Er að skynsamleg að allir? Svo hugsa um this-- hugsa um pointers-- hér í Yale höfum PO Box kerfi þar sem hvert nemandi hefur póstlista heimilisfang þar sem þú getur farið í kjallara LW og þú getur bara farið og grípa hvað sem þú þarft frá þeim heimilisfang. Það sama er að gerast hér í tölvu. Þú hefur þessar minni bæti að þú getur geymt upplýsingar inn, en í því skyni að vita hver stykki af upplýsingar passa upp á hvað þú ert að reyna að finna og þar, þú þarft að hafa músina sem segir þér hvernig á að fara þangað. Svo til dæmis, fyrir mig, PO Box minn, Ég hef ákveðið fimm stafa tölu. Það er netfangið mitt. Svo ég geti líkamlega fara í minni, Ég get litið á það heimilisfang, Ég get farið að því PO box og aðgang að gögnum inni. Er að skynsamleg að allir Tölvan þín er í raun gera nákvæmlega það sama. Svo allt bendillinn er að gera er að það er bara að búa til minni og minni gögn hennar er í raun veffang eitthvað annað. Þá er hægt að fara og finna það. Allir góður? Allir góður við mig svo langt? OK. Cool. Allt í lagi. Svo næstum það sama og áður. Þannig að við höfum fyrst, breytu heitir x sem case-- Ég ætla að breyta þessu gildi til 5. Segjum bara heimilisfangið þetta í minni er 0x0. 00. Great. Svo, á sekúndu okkar lína af kóða, við erum fara að búa til músina kallað PTR músina. Og heimilisfang þess, við skulum bara segja að það er 0x01 í minni. Og við viljum í raun að store-- á merkið x gefur þér heimilisfangið af því x var. Og heimilisfang x var 0x00. Þannig að þetta bendi nú í raun hefur heimilisfangið geymdar sem verðmæti þess sem X var. Allir með mig hingað? Cool. Og þá, á þann hátt að við viljum afrita það, er ef við myndum lýsa og frumstilla annar blokk af minni int. Ekki satt? Þetta myndi vera int. Það væri kallað eintak. Og þú ert að fara að get-- svo stjarnan bendillinn gefur þér raunveruleg gögn frá þeim heimilisfang. Að merkið gefur þér tölu, stjarnan gefur þér gögn. Þannig að gögn á músina. Þetta bendi bendir til 5. Og svo þessi aðgerð here-- stjörnuna pointer-- fer, fær allt sem er á Þessi blokk og verslanir það hér. Allir skýrt hvernig það gerðist? Svo tveir rekstraraðilar rétt there-- að merkið og star-- bara gera mismunandi hluti þegar það er notað á ábendingum. Einn fær þér heimilisfangið, einn fær þér raunverulegt verðmæti. Svo vertu viss um hvenær þú krakkar eru erfðaskrá að þú rugla ekki þessu tvennu því þeir eru gríðarlega ólík. Hér höfum við gott dæmi um 0x01. Það er mjög gott lítill fjöldi að muna. Í raun tölvunni þú ert að fara að hafa risastór rass tala sem er eitthvað það er ekki gott, ekki þægilegt. Það er að fara að vera einhver sorp gildi. Og svo það er að fara að virkilega, raunverulega skipta upp forrit. Það er mjög mikilvægt núna að við höfum grundvallaratriði niður fyrir why-- eins, hvað er líkamlega gerast þegar þú ert að keyra þessar blokkir af kóða. Everyone-- já? Áhorfendur: Svo int x er jafnt int afrit? ANDI Peng: Nei vegna þess að í þessu tilfelli, int x-- gildi x-- jafngildir 5, ekki satt? Og þá INT eintak er 5. Svo ef þú varst að jafngilda þeim að hvert annað því þeir eru heiltölur, já, þeir myndu meta til satt. En ef þeir voru strengir í minni, eins og sá sem Davíð gerði á td það er mismunandi vegna þess að þeir eru tilvísanir heimilisföng stöðum í minni og þeir myndu jafngilda rangar. Svo hér það væri satt vegna þess að þú ert beint að bera saman values-- integers-- en í öðrum sem þú ert tilvísanir stig. Vegna þess að band er í fylki, og all-- við munum tala um þetta later-- en array er í raun bara bendi á fullt af stafir í minni. Þeir eru svolítið öðruvísi. En í þessu tilfelli, já, þú gætir gert það. Áhorfendur: Geturðu útskýrt veffang afrit? ANDI Peng: Já. Svo er það just-- ég ekki fylla í gildi en það er bara sumir af handahófi annar sorp gildi sem við gerum ekki sama um. Vegna þess að þegar þú byrjar program þú grein fyrir því að við gerum ekki raunverulega alveg sama hvað á Raunveruleg heimilisföng eru, við þurfum bara að vita hvað er á netföng. Já. Áhorfendur: Stjarnan hliðina int á Önnur lína sem er öðruvísi than-- ANDI Peng: Já. Áhorfendur: --The dereferencing og tilvísanir stjörnu? ANDI Peng: Já. Svo höfundar C-- hver ákvað að skrifa tungumál C-- var ekki alveg klár. Þeir voru ekki mjög klár í að reyna að reikna út hvers vegna við ættum að gera þetta. Ef það var ég, myndi ég örugglega nota tvær mismunandi stafi. En þeir ákváðu að nota sömu einn. Svo stjarnan eftir int, sem segir tölvunni að þú ert að fara að búa til músina. En ef þú ert að reyna að dereference something-- í öðrum orðum, fara á heimilisfang og draga gögn frá somewhere-- stjarnan er notuð á annan hátt. Svo þið bara að vera varkár óður í ekki Messías upp tvenns konar notkun. Cool. Já? Áhorfendur: Svo bara að endurtaka að ganga úr skugga um að ég er following-- ANDI Peng: Totally fínn. Áhorfendur: --in vinstri-hönd hlið af að renna, gera við neitt sem við þekkjum. Við lýsum heiltölu [Inaudible] sem eru jafnir að 5. ANDI Peng: Já. Áhorfendur: Hægri. Og þá höfum við INT stjörnu hlutur og sem segir að allt í lagi, svona eins og við lýsti heiltölu, nú við erum að lýsa bendi. ANDI Peng: Rétt. Rétt. Áhorfendur: Hægri? Og bendi okkar er PTR. ANDI Peng: Já. The nafn af the bendill er PTR. Pointer. Áhorfendur: Og þá er það jafngildir NX sem bara segir C að það vill komast í gildi á heiltala x-- verðmæti sem heiltala x var úthlutað. ANDI Peng: Verið varkár vegna merkið x raun segir you-- tölvunni sem þú vilja draga veffang sem x er. Svo merkið gefur þér netfang, stjarna gefur þér gildi. Áhorfendur: Svo viljum heimilisfangið. Við skulum segja að x var at-- ANDI Peng: Við reyndar vita hvað x er, ekki satt? Þar sem við vitum að x was-- ég er að gera þetta upp en við skulum bara segja, geðþótta, það var 0x00. Ekki satt? Þannig að við vitum að netfang er 0x00, og svo þegar við förum og merkið x, við vitum að það meti að 0x00. Sem þýðir að við geymt sem sem verðmæti músina okkar. Er að skynsamleg? Áhorfendur: Já. Og afrita fer dereference ptr-- ANDI Peng: Hægri. Áhorfendur: --which er bendi sem við höfum lýst sem segir okkur að heimilisfang heiltölu x. ANDI Peng: Já. Áhorfendur: Og í þessu eitt tilfelli, stjarna PTR er jafnt verðmæti x sem jafngildir 5. ANDI Peng: Rétt. Áhorfendur: Cool. Og það er a einfaldur vegur til fá að eða er að eini way-- ANDI Peng: Svo núna það virðist ekki mjög rökrétt fyrir okkur að eyða öllum þessum tíma að gera þetta frábær flókinn hlutur þegar allt sem við höfum gert er bara að búa til tvö heiltölur verðmæti 5, ekki satt? Það skiptir ekki skynsamleg. En þegar við munum fara yfir minni úthlutun and-- við munum fara yfir hvers vegna þetta getur verið handlaginn og gagnlegt síðar. Treystu mér þegar ég segi að við gerum ekki bara búa til þessar handahófskennt aðgerðir fyrir þig krakkar að læra vegna þess að við erum reyna að skipta við þig. Það er í raun notar fyrir allar þessar hlutir og við munum tala um þá. Áhorfendur: Awesome. ANDI Peng: Já. Áhorfendur: [inaudible]. ANDI Peng: Góð spurning. Áhorfendur: [inaudible]. ANDI Peng: Það er ekki. Það er í raun ekki. Áhorfendur: --two breytur sem einnig jafn [inaudible]. OK. ANDI Peng: Já. OK. Áður en ég fara, er allir ljóst? Ég veit Taylor, þú got í smá seint. Það er allt í lagi. Það er á netinu. Þú munt horfa á fyrstu 20 mínútur og þú munt vera allt gott. OK. Cool. Allt í lagi. Svo er þetta í raun eins konar líkur hlutur sem við gerðum bara. Það er bara í grafísku formi. Ef þú varst að fylgjast með hvað bara gerðist, int x jafngildir 5, allt sem við höfum gert á þessum tímapunkti er búa til breytu sem heitir x int. Við erum að fara til að geyma gildi 5. inni af því. Það er engin bendi vegna þess að við höfum ekki í raun búið músina enn, ekki satt? Og síðan í næsta lína, int stjarna músina, það er þar sem við erum í raun og veru líkamlega skapa músina og við erum að setja það jafnt eða tilvísanir bendillinn að merkið x. Sem er þar þar í minni þetta gerðist til að vera. Ég gerði í raun ekki nenna gera upp verðmæti í þetta sinn. En í þessu tilfelli, að benda þú vildi vera jöfn að. Og þá niður þar, stjarnan bendillinn er dereferencing. Það er þar sem við erum draga upplýsingar. Þannig að gildi á x er í raun að fara að vera jafn 35. Svo á þessum tímapunkti, höfum við í raun bara endurstillt x 35 án þess í raun að snerta x. Bara í gegnum músina sem var að benda til X, getum við í raun breyta því sem x var. Ég ætla að draga þetta út eins og heilbrigður. Svo hér höfum við búið sumir af handahófi netfang hér. Við skulum bara segja 0x00 aftur. Skulum segja bara það er heimilisfangið. Og við höfum búið heiltala heitir x og gildi sem ég hef tengt því er 5. Í annarri línu, Int pointer-- svo nú að við höfum fékk þessa seinni hlutur hér kallað pointer-- og við erum að fara to-- skulum bara segja það er einhver annar handahófi minni heimilisfang. Þannig að við erum að fara að setja þetta jafnt hvað sem var. Og þetta bendillinn er að fara að benda til verðmæti x Og þá, ef við breyta the-- ef við gerum stjörnu músina, það er að fara til gildi músina okkar. Í þessu tilfelli, það er að fara að fylgjast með Þessi ör yfir gildinu x og það er að fara að breyta því í 35. Í raun, breyting við bara x án þess að snerta x. Með bara vísun ábendingum, við getum farið og breyta gildi x. Er að skynsamleg? Svo á þennan hátt, getum við í raun endurnefna og rechange og endurúthluta gildi að það sem við gerðum ekki raunverulega gera okkur. Er að skynsamleg að allir? Cool. OK. Svo flókin grafík hér. Fara línu fyrir línu. Í meginatriðum, bara gera nákvæmlega sama sem ég gerði bara. Áður en ég fara, ég virkilega að gera bara viss um að allir er mjög skýr um þetta. Svo hér, kóðinn sem við höfum er INT a jafngildir 3, b jafngildir 4, c jafngildir 5. Þannig að við höfum búið þrjár heiltölur heitir a, b og c sem eru jafn 3, 4 og 5. Og þá erum við að búa til þrjár ábendingum sem benda til hvert þessara stærða. Og nú erum við að fara að fara yfir í meginatriðum hvað gerist þegar þú starfa á þeim. Svo draga þau út. Taktu lak af paper-- ég ekki vita ef þið hafið öll pappír, en þá sem gera það ekki, kannski láni frá þá sem gera. Taktu blöð af pappír og fara línu fyrir línu. Og á hverjum aðgerð sem þú gerir, Ég vil að þú krakkar að í raun skrifa út hvað er A, B og C á þessum tímapunkti. Og hvað eru heimilisföng, hvað eru ábendingum sem vísa í a, b og c á þessu stigi? Og þá vonandi mun konar stíga ykkur í gegnum hvernig á að hugsa um ábendingum. Við erum ekki að fara að fara í gegnum þau öll. Kannski ég skal gefa þér five-- eins, þrjár mínútur. Að byrja á fyrstu. Oh. Oops. Áhorfendur: Í annarri línu, hvers vegna er ekki stjarna [inaudible] breyta? ANDI Peng: Mundu í rekstraraðila, í fyrstu viku, við töluðum um hvernig ef þú gerir auk jafngildir, það bara þýðir að jafngildir plús c. Í þessu case-- svo er þetta annar leið til þess stjarnan væri hægt að nota. Auk þess að vísa og lýsa ábendingum, Mundu að það einnig þýðir margföldun. Þannig að í þessu tilfelli, myndi það bara vera jafnt sinnum c. Það er bara eins mismunandi leið til að skrifa þetta. Áhorfendur: a jafngildir sinnum c. ANDI Peng: Já. Áhorfendur: Hvað þýðir það ef það segir að merkið bréf? ANDI Peng: Merkið þýðir þú ert að fara að that-- þú ert fara til þess staðar bendillinn er benda og draga á netfangið. Svo merkið gefur þér tölu, stjörnu gefur þér raunverulegt virði það. Áhorfendur: Erum við byggja á línu fyrir línu? ANDI Peng: Þú ert byggja á línu fyrir línu. Svo bara fara eina línu í tími og then-- þig þarft ekki að hafa áhyggjur af klára allt hlutur. Við skulum reyna að komast í gegnum kannski tvær, þrjár línur og þá munum við boða og klára þetta. Það er alveg í lagi ef þið eru glötuð. Þetta er mjög erfitt hugtak. Ef þið eru áhyggjur af því að í bekknum fer svona eins og David var að segja, það gerir það ekki. Við erum að ná að huglæg hámarki erfiðleikum og þá er að fara að vera niðurhallandi. Svo þú krakkar eru næstum þar. Við höfum fullt af nammi til að fá þið gegnum hump. Ég held ansi mikið eftir fall brot við munum vera yfir hump og lífið verður allt í lagi aftur. Svo engar áhyggjur á öllum. Allt í lagi. Ég skal gefa ykkur 20 fleiri sekúndur til að vefja upp. OK. Allt í lagi. Við skulum taka a stunga á þetta. Eins þið gefa mér svör, Ég ætla bara að fara að slá þá í. Og vonandi we-- get ég? Ég reyndar get ekki slegið það inn. Ég teikna hana á borð. Svo hér í þessari fyrstu línu við höfum jafngildir b stjörnu c. Einnig Elliot kom upp virkilega, virkilega gott lið. Þar sem ég gleymdi að auk tvær leiðir sem við getum notað stjörnu tákn, það er í raun þriðja leiðin. Margföldun. Og svo bara fæ ekki rugla því sem er fyrsta leið til að nota stjörnu. Það er bara að segja tölvuna að ég er að fara að búa til músina. Hin leiðin með því að gera stjarnan músina þína, sem segir músina sem þú vilt fá aðgang að gögnum á þeim músina. Og þá, auðvitað, það er bara einfalt margföldun milli tveggja talna sem segir þér að ég vil að margfalda tvo. Svo er það einhver fjöldi af lifnaðarhættir getum við notað stjörnu tákn. Ekki fá rugla. Bara ganga úr skugga um að þú krakkar skilja nákvæmlega hvað þeim öllum þremur eru að gera. Svo í þessari fyrstu línu, a jafngildir b sinnum c. Svo skulum við fara í gegnum það er, það er b, það er c? Og hvað er bendillinn af a, bendi á b, og bendi c? Hvað eru þeir allir jafna? OK. Svo við byrjum burt með a jafngildir 3, b jafngildir 4, og c jafngildir 5, ekki satt? Svo eftir að fyrstu línu, getur einhver sagt mér hvað er? Já. Feel frjáls til að bara hrópa svör. 20. Good. Hvað er b? Áhorfendur: 4. ANDI Peng: Hvað er c? Áhorfendur: 5. ANDI Peng: Yay. Good. Hvað eru ári, PB, og stk? Áhorfendur: 000.001 og 002? ANDI Peng: Já. Svo eins konar bragð spurningu en ekki í raun vegna þess hér að ég dró út raunverulegan minningar. En vegna þess, fyrir sem dæmi, er það ekki í raun veit hvað þær tölur eru, við getum bara sagt merkið. Ég veit ekki einu sinni hvort ég getur teiknað merkið. Það er like-- hvernig gerir þú það? Áhorfendur: Eins teikna átta. ANDI Peng: Eins og átta. Svona. OK. Áhorfendur: Bingo. ANDI Peng: Morð það. Svo merkið a, getur þú bara að gera það. Þar sem við gerum ekki raunverulega sama hvaða gildi sem er, og það er sumir lengi rass gildi engu að síður, við erum að nota bara Giòng að segja merkið a. Þá er það PB? Áhorfendur: [inaudible]. ANDI Peng: Já. Cool. Allt í lagi. Easy Fyrsta lína. Við fengum þetta. Ábendingum auðvelt. Það er allt í lagi. Annarri línu. Og svo Star jafnt er sú sama hlutur eins og að segja að jafnt sinnum c. Það er bara auðveldara leið til að skrifa. Þannig að við erum ekki að reyna að gera a lið eða eitthvað hér. Svo búinn með fyrstu línu. Hvað er á annarri línu eftir að þú gerir a jafngildir sinnum c? Áhorfendur: 100? ANDI Peng: Það er 100. Good. Hvernig væri b? Áhorfendur: [inaudible]. ANDI Peng: Hvað um c? Áhorfendur: [inaudible]. ANDI Peng: Og hvernig óður ábendingum? Eru they-- sama, ekki satt? OK. Nú þriðju línu. Little trickier. b jafngildir stjörnu pa. Getur einhver sagt mér, í fyrsta lagi hvað þýðir stjarna ári jafnir? Áhorfendur: Það er gildi sem er geymt á a. ANDI Peng: Einmitt. Og hvað er gildi sem er geymt á a? Áhorfendur: 100. ANDI Peng: OK. Svo það myndi vera eftir framkvæmd þessi lína af kóða? Áhorfendur: [inaudible]. ANDI Peng: Hvað b? Áhorfendur: 100. ANDI Peng: Já. Og þá er allt annað ansi mikið óbreytt, ekki satt? Þar sem við ekki snerta það. Cool. Fjórða lína. Örlítið flóknari. Svo Einkatölva aftur, stk er bendillinn sem benti til c-- jafngildir pa. Hvað er? Áhorfendur: 100. ANDI Peng: Hvað er b? Áhorfendur: 100. ANDI Peng: Hvað er c? Áhorfendur: 5. ANDI Peng: Hvað er ári? Áhorfendur: Merkið a. ANDI Peng: PB? Áhorfendur: Merkið b. ANDI Peng: Og erfiður, hvað er stk núna? Áhorfendur: Merkið a. ANDI Peng: Yay. Woo Hoo. Þið sjá? Þetta er allt í lagi. Það er ekki svo slæmt. Við höfum meira nammi ef það er ekki allt rétt, en ég held að það er allt í lagi. Og við erum að fara að fara yfir bara einn meira áður en við högg erfiðara sjálfur. Svörin sem ég hef hér. Í meginatriðum, vita að þetta er bara eins og stærðfræði á þessum tímapunkti. Þegar þú hafa einföld jöfnur eins a plús b, a sinnum c, það er auðvelt að gera. Og þegar þú byrjar vaxandi á það, bara fara röð aðgerða. Sama og áður. Haldið utan um ef þú stjarna er áður en eitthvað. Sem segir þér gildi. Ef þú ert með og áður eitthvað, segir það þér heimilisfangið. Og þú ættir að nota annaðhvort ábendingum eða að verðmæti. Svo við skulum fara yfir þetta síðasta einn raunverulegur fljótur. Ekki þetta síðasta, því miður. Reyndar, þú krakkar geta tekið. Hver einn gera þú krakkar vilja til að fara yfir út af hinum þremur sem við höfum? Ég held ekki að við getum bara gert það vegna þess að við getum ekki bara hoppa á línuna. OK. Þú krakkar hafa ekki val, það er bara þriðja til síðasta. Star stk jafngildir b sinnum c. Áhorfendur: Star PB? Áhorfendur: Star PB. ANDI Peng: Sorry? Áhorfendur: Star PB. ANDI Peng: Star PB. Ó, slæmt minn. Star Pb jafngildir b sinnum c. Ég ætla að gefa ykkur 10 sekúndur. Bara fljótt hugsa. Þetta er að við höfum svo langt, hvað gerist eftir að við framfylgja þeim fimmta lína þarna? OK. Hvað er? Áhorfendur: 100. ANDI Peng: 100. Hvað er b núna? Áhorfendur: 500. ANDI Peng: Good. Er einhver vilja til að útskýra mér hvers vegna þetta er 500? Ég finn ekki eins og við í raun alltaf snert b. Hvernig fengum við að stjórna til að breyta gildið b án þess að snerta B? Já? Áhorfendur: Vegna stjarna PB það gildi á pb-- ANDI Peng: Einmitt. Áhorfendur: --which er b. ANDI Peng: Einmitt. Svo hér í myndinni okkar, músina okkar PB er í raun að benda á þessa réttar Hér, sem er í raun líkamlegur b. Og svo ef þú ferð og þú gerir stjörnu PB, það er Eftirfarandi ör þinn músina þína og líkamlega að breyta gildi b. Svo er það hvers vegna við höfum B breytt í 500 án þess í raun að snerta b. Og þá allt annað er enn sama því að við vissum ekki snerta það. Það er b. Cool. Og svo-- Áhorfendur: Ég hef bara spurning. ANDI Peng: Já? Áhorfendur: Þar we've-- það er ekki lengur merkið c, þýðir það merkið A áframsenda á sama núna? ANDI Peng: Já. So-- Áhorfendur: Svo arrow konar bara færist and-- ANDI Peng: Svo essentially-- Áhorfendur: --now við getum ekki access-- ANDI Peng: --when við dereference c on-- I falsari. Hvað var þetta? Þriðja lína? Fjórða. Fjórða lína. Allt sem við gerðum var í raun, breyta þessari ör og hafa það bent í átt að stað. Áhorfendur: Svo við getum ekki nálgast c lengur. ANDI Peng: Ef þú hefðir þetta nákvæmlega númer getur þú nálgast það. En, nei. Við höfum ekki músina bendir til c lengur. Ég held að ef þú vildir að koma aftur að opna það, þér myndi skapa annað músina sem aftur benti til c eða dereferenced þetta og benti aftur. Svo, nei, eins og af réttur nú, þremur ábendingum, enginn þeirra benda til c. Allir góður? Svörin eru á netinu. Feel frjáls til að, eftir kafla, fara yfir síðustu tvö og próf sjálfir. Sömu hugtök, bara svolítið trickier. Bara fylgja með rökfræði hvers vegna hlutirnir eru mismunandi hlutir. Og vísbending, eru ábendingar efni sem við elskum að ná á prófum því þeir eru eðli mjög krefjandi. Þannig að ég myndi benda til þess að þú krakkar endurskoða allt þetta graf eða rista svipuð hugtök til þetta áður spurningakeppni þína í næstu viku. Áhorfendur: Afsakið mig. ANDI Peng: Já? Áhorfendur: [inaudible] Endanleg one-- [inaudible]. ANDI Peng: 50.000? Ég myndi þurfa að fylgja því aftur niður. En somewhere-- ég held línuna áður, sem þú bjóst til risastór c gildi. c jafngildir þetta risastór hlutur sem er 100 sinnum 500. Nei Áhorfendur: [inaudible]. ANDI Peng: Já. 100 sinnum 100 sem er 10.000. Sem er 10.000. Svo aftur niður þar sem þú ert að margfalda b og c. Svo músina sem bendir til b-- sem er gildi 500-- sinnum a-- Áhorfendur: [inaudible]. ANDI Peng: Kannski er það rangt. Áhorfendur: Nei, nei, það er ekki. [Inaudible] bendillinn á c er nú að benda á a-- ANDI Peng: Já. Hann er rétt. Áhorfendur: --it er á sína á jafningja a times-- það er verðmæti c. ANDI Peng: Getur þú sagt að lítið bita hávær svo allir geti heyrt í þér? Áhorfendur: Svo bendi á c bendir nú hvað bendillinn af a notaður til að benda to-- og enn does-- en þeir benda á að sama sem er a, ekki satt? Gildi er þó það hefur verið nýlega skilgreind. Og í upphafi sem þú ert segja a var áður 100 sinnum gildi á b, sem er 500. Og svo er það hins vegar margt sem er. 50.000. Þeir sem þú ert reassigning að að hvað minni á c is-- músina á C er að benda á sem er. Svo þú ert að endurskilgreina a að vera 50.000. ANDI Peng: Hún gat kenna kafla fyrir mig. Næst þegar það er allt þitt. Hér. Hér er meira nammi fyrir það. Þú eiga skilið nammi fyrir það. Áhorfendur: Ég náði næstum því. ANDI Peng: Þú lent næstum því. Það er allt í lagi. Já. En hún var einmitt rétt. Það sem þú þarft að gera er that-- Ég held að við að fylgja því að ábendingum nú bendir til mismunandi gildum. Svo value-- hryggur, bendillinn c repointed til a. Og svo að færst allar tölur okkar. Og þess vegna, þegar þú ferð í gildi geymd þar, það er öðruvísi. Er að skynsamleg? OK. Cool. Allir góður, áður en ég flyt á? Áhorfendur: Er the-- þegar þú ert að fara á milli raða í vinstri dálkinn, gerir sem fyrstu röðinni hafa áhrif á annað röð og þá second-- eins, það er all-- ANDI Peng: Já. Svo ímynda mér að það er númerið sem ég gafst bara í jafngildir b sinnum c, stjarna jafngildir c. Réttlátur ímynda sér að ég hef bara hljóp þennan kóða og ég vissi ekki að prenta út það sem allt þetta var. Ef ég væri bara að prenta fyrsta hlutur efst, það vildi vera hér. Ef eftir að ég hljóp alla þær línur af kóða, hvað þessi gildi ættu að vera aftast eru sem. Þannig að ég hef reyndar skrifað forrit hér. Ég hef ekki gert allt margföldun. En bara ímynda sér. Svo hér er ég bara a forrit sem heitir ábendingum. Ég ætla að stækka ef þú guys-- lagi. Þannig að ég hef búið breytur a, b, og c. Ég hef sett þá jafna 3, 4, og 5 og ég hef búin samsvarandi ábendingum þeirra. Og þá er hér ég ætla bara að fara að prenta út hvað það er. Svo láta mig hlaupa það. Gera þú krakkar see-- vitleysa. Ert þú krakkar sjá hvernig, b og c eru á og þessi mörk en ábendingum þeirra eru þetta risastór sorp gildi sem við gerum ekki sama um? Svo ef ég væri í raun að stinga í öllum margföldun og þá prentað allt þetta væri framkvæma út hvað sem er neðst. Svo ef þú krakkar vilja til leika í kring með í raun líkamlega erfðaskrá, þú krakkar geta bara stinga öllum þeim sem. The merkjamál vilja vera á netinu og þá þinn gildi ætti að prenta í það síðar. Og þá munt þú sjá hvernig bendillinn heimilisföng hafa í raun færður. Svo þú munt sjá hvernig heimilisfang c raun verður að jafna hvað veffang var. Og þeir passa hvað að mikill fjöldi er. Góð spurning. Allir allt í lagi? Eitt síðasta símtal fyrir spurningar. OK. Allt í lagi. Svo að undirbúa að hafa hugann blásið örlítið aðeins meira. Fylki eru í raun bara ábendingum. Það er allt sem þeir eru. Og muna, hvað eru strengir? Þeir eru einnig fylki. Svo það eru strengir í raun? Þeir eru eins og ábendingum til farin af bleikju á fleiri stafir. Svo það er bara hugmyndir sem byrja til að byggja ofan á hvern annan. Svo er það why-- þig muna í fyrirlestri, David, þegar hann hafði að samanburður af int band mömmu er eitthvað og þá annar strengur mamma og þú reyna að jafngilda tvö við hvert annað, þeir gefa þér mismunandi gildi. Það er vegna þess að strengir sjálfir eru ekki gildi. Allt sem þeir eru eru minni heimilisföng char-- þeir eru fylki af chars og fylki eru bara ábendingum. Svo, í raun, þegar Davíð var comparing-- er það í lagi ef ég eytt öllu þessu? Svo í fyrirlestri þegar Davíð hafði mamma jafngildir jafngildir mömmu, okkur sem virðist vera það sama. Ekki satt? En, í tölvunni undir hetta, hvað er raunverulega að gerast er að þetta band, allt sem er er fylki. Með ampersand-- eða, hryggur, með null Terminator í lokin. Ekki satt? Sviga 0. Rangt sviga. Svo allir þeir were-- allt þessir tveir strengir were-- eru array af stærð fjórum fótum með stafina mömmu og mamma. En hvað fylki í raun eru bara ábendingum til ákveðinn stað í minni sem segir þér að byrja array þinn. Þannig að í þessu tilfelli, þetta var var bara sumir sorp gildi, sumir af handahófi músina. Og allt þetta var var einhver önnur sorp gildi. Segjum bara 0x200. Og svo þegar þú reynir að jafna þá tvo við hvert annað, þeir meta að rangt vegna þess sem addresses-- ábendingum að þeir were-- voru öðruvísi. En það er öðruvísi ef þú ert reyna að bera saman raunverulegan heiltölur. Eins og ef þú vildir compare-- í síðustu example-- int A til B, þeir myndu meta Satt sem Elliot sagði vegna þess að þeir voru heiltölur sem voru geymdar og þú ert að meta bara gildi. Hér eru því strengir fylki og allt fylki eru ábendingum, það er hvers vegna þeir eru ekki jafnt við hvert annað. Svo eins konar ruglingslegt, þessi grafík. En við skulum ímynda sér. Við höfum búið á fjölbreytta stærð 3 með vísitölu frá 0 til 2-- 0, 1, 2 með þeim gildum frá 1, 2, og 3 geymd í þeim. Öll array raun does-- hér, við skulum bara segja að ég er að búa til bendi að þessi fylking sem er aðgang að markaðsverði í Fyrsta Vísitala þessu fylki. Svo hér það væri 0. Ekki satt? Þurfa allir að skilja hvernig að fyrsta línan metin? Great. Og svo ef þú vildir frumstilla frekari gildi eftir að allt sem við erum að gera er reassigning. Svo 0, 1, 2, 1. Þannig að þetta bendi sem var einu sinni benda til hér, eru allir við að gera er að færa það neðar. Það er það sem plús 1 er að gera. Og þá getum við sett 2 þar. Ef við vildum að setja 3 í einu eftir, myndum við eyða þessu músina, setja 3 í það. Er að skynsamleg allir? Já. Vissir þú með spurningu? Áhorfendur: Það er [inaudible] hafa spurning, ég segi það samt. Ég held ekki að það er í raun Spurningin but-- á ensku, array er jafnt og 1 vit. Við erum eins og, OK, the fyrstur hlutur. En hlutirnir eru 0 Vísitala [Inaudible] array jafngildir 0 að tilgreina fyrsta blettur. ANDI Peng: Já. Svo í raun það sem ég er að gera hér er Ég ætla ekki að fá aðgang að fyrsta vísitölu. Allt sem ég var doing-- svo fyrst af öllu, segja mér hvað þýðir stjarna array gera? Hvað þýðir stjarna áður bendi gera? Áhorfendur: Það sýnir bendi. Að þú ert að lýsa bendi. Það de-- ANDI Peng: Það dereferences sem þýðir það fer og í raun fær gildi. Ekki satt? Svo í þessu tilfelli, þú vilt fá gildi hér og setja það í 1. Já? Þannig að ég ætla ekki actually-- ég ekki annt um vísitölu þetta, allt sem ég er að gera er bara að iterating niður með því að færa músina mína niður fylkisins. Og þá loksins ég þarft að stöðva það, ekki satt? Og hvernig sem ég stoppa er þegar ég lenti í því tilviki af streng, a null Terminator. Ég veit, ó, ef ég lenti á back-- ef ég sé sviga 0, ég veit ég er búin með þetta og ég veit að ég get bara hætta iterating gegnum. Virkilega góð spurning. Og við munum virkilega fara lengra í dýpt í þessari næstu viku vegna þess að stykki sem er að fara að för með sér mikið af notkun ábendingum. En bara veit að núna, það er bara mismunandi more-- það er bara önnur leið til tölvan að skrifa, fyrst og fremst, það sem við höfum verið að gera. Eins David sagði í fyrirlestur, á þann hátt að við aðgang fylki er bara með því að gera array 0, krappi 0, ef við bara langaði til þess að sjá fyrstu gildi. Allt tölvan er að gera er að snúa sem inn í það og iterating sig. Svo við köllum það nokkur dæmi um setningarleg sykur sem er bara fínt leið til að segja notendavænt leiðir okkur að vita hvernig á að forrita. En tölvan undir, hvað það er að gera, það er í raun bara að hafa bendi sem er að stilla. En hvernig sem við skrifa það, vegna þess að það er auðveldara fyrir okkur að hugsa um hluti í skilmálar af kassa og hvernig á að færa niður kassa, er með því að hafa sviga. Því miður, það var í raun, virkilega illa but-- já. Áhorfendur: Svo hvernig væri þú bera saman tvo strengi til að sjá hvort þeir eru jafnir hvor öðrum? ANDI Peng: Svo David skrifaði þetta forrit í fyrirlestri þannig að ég ætla bara að fara að fara þetta hratt og í stutta stund. The vegur þú myndir gera það er að þú væri í raun þarf að fara og bera saman addresses-- eða gildin fengin úr ábendingum. Svo man, hvernig finnst þér fá gildi hér? Mér er alveg sama um heimilisfang hér. Hvernig fæ ég í raun gildi hvað er hér? Áhorfendur: [inaudible]. ANDI Peng: Einmitt. Svo þú bera saman á stjörnuna hér á móti stjörnunni hér. Eru þeir jafnir. Og þá fara niður. Eru stjarnan hér og stjarnan hér jafnir? OK. Þeir eru jafnir. Og þú heldur bara að fara niður þar til þú hefur högg enda bæði. Og ef öll þeirra eru jafnir, þá þú veist band er jöfn. Og C hefur í raun virka skrifað heitir String Comp sem reyndar bara gerir það fyrir þig svo þú dont ' að skrifa það sjálfur. Já? Áhorfendur: Ég held að í fyrirlestri er þegar við á að bera saman. Við gerum ekki raunverulega þörf a gegn eins pi, ekki satt? ANDI Peng: Þú ert ekki vegna þess að við í raun ekki sama hversu margir kassar sem við höfum ítrekað í gegnum. Allt sem við umönnun er að við erum að fara að halda áfram þar sem ég þekki til að hætta. Og þú veist að hætta þegar það er einhvers konar ábendingu sem þú ert á null Terminator. Já. So-- Áhorfendur: [inaudible]. ANDI Peng: Já. Svo er að ræða að bera saman strengir, ég í raun ekki sama hversu mörg bréf are-- Ég þarf að bera saman ef þeir eru sönn eða ósönn ef þeir eru jafnir hvor öðrum. Mér er alveg sama hversu mörg bréf eru í hverju þeirra, ekki satt? Ég hugsa bara að þetta passar við þetta og einn eftir leikjum og eitt eftir passar alla leið upp til enda. Ekki satt? Er að skynsamleg? Svo ég er ekki alveg sama hversu mörg bréf, Ég hugsa bara að allar stafina samsvörun. Já. OK. Get ég flutt á frá þessu? Great. Við erum að keyra svolítið stutt á tíma þannig að ég ætla bara að leyfa þér krakkar að stuttlega líta á þetta. Keyra það í kenni ef þú krakkar eru forvitinn. Og þú krakkar geta séð hvað þetta verður að prenta út. OK. Svo eitthvað sem við munum einnig minnast á a hluti er hugmyndin um músina tölur. Sem allt það er, er frekar en að stilla sem gildi hvað er geymt á heimilisfang músina þína, það er bara í raun að breyta heimilisfangið sjálft. Þannig að ef þú eins og mönnum vildi að stilla músina handvirkt, eins og þú myndir gera það er bara gera n sinnum the stærð af músina. Ekki satt? Svo int. An int-- hversu margir bæti í minni er int? Það er fjórum, ekki satt? Þannig að ef ég veit að ég hef fjölbreytta allt ints og ég vil það að benda á einn síðar, myndi ég veit að ég er bara að færa bendilinn minn niður fjórar bæti, ekki satt? Og svo n sinnum stærra á músina bæti er hins vegar margir bæti þú ert bara fara að færa bendilinn niður eftir. Svo til dæmis, ef við höfum fjölda ints, sá fyrsti, við skulum bara segja, er geymt sem 0x00. Þú veist næsta einn er að fara að vera á 0x04 því það er fjögur bæti síðar. Og sá eftir það er að fara að vera 0x08 og svo framvegis og svo framvegis. Og svo, krakkar, taka a útlit. Allt sem þú ert að gera hér er sem þú ert með músina y og þú ert að bæta það til þinn minni svo að þú getur flutt niður blokkir af minni úthlutað. Konar hærra stigi hugtak. Þú krakkar vilja ekki þurfa að vita í þessari viku, en það er allt það er að gera þarna niðri. OK. Annar brandari tíma. Tveir strengir ganga inn á bar. Einn segir, ég vil romm og Coke sorp gildi. Hin segir:, þú þarft að afsaka vinur minn, hann er ekki null slitið. Þú krakkar fá það. Sorry. Þetta er hvernig ég haldið mig fara þegar ég prep fyrir lið er ég að setja inn nokkrar brandari skyggnur. Engu að síður. OK. Áður en ég fara on-- svo í raun, höfum við falla öll huglæg málefni sem tengjast ábendingum. Og þá erum við að fara að talk-- flutning meira, tala um hvers vegna það er mikilvægt og hvernig það passar inn í Hugmyndin um minni stjórnun. En áður en ég flyt á, hjartarskinn einhver hafa spurningar um músina notkun, hvað er að gerast þegar þú ert að búa ábendingum, Hvernig eru tilvísanir hver annað, hvernig eru þeir dereferencing? Einhverjar spurningar um að áður en ég flyt á? OK. Great. Þannig að þetta færir okkur inn í þetta Stærri hærra stigi hugtak af minni stjórnun í heild. Svo, í raun, í tölvan, það er tvær helstu tegundir af minni eða svæðum þar sem minni er geymt. Þú ert hér hvað heitir hrúga og þú hefur hingað það sem er kallað stafla. Og við erum að fara að tala um stafla fyrst því það er meira finagley sá sem þér hafa að eins konar eðli skilja hvað er að gerast. Svo allt stafla is-- hugsa um það sem líkamlega stafla af minni þar sem þú ert með blokk af minni sem er sett til hliðar fyrir áætlun þína á meðan það er í gangi. Og þetta er þar, í raun, allt af staðbundnar breytur eru geymdar. Þannig að þetta er bara aðdregna í myndinni þess stakkur. Stafla þarna niðri, ég er bara zooming í aðeins meira. Svo, í raun, í stafla sem þú þarft fullt af virka í forritinu. Svo skulum við fara bara aftur að viku tvo dæmis þar sem við höfðum meginhlutverki okkar sem og og teningslaga fall þar sem við reyndum að búa til fall sem cubed-- sem tók breytur sem inntak, cubed þá og sneri aftur þá aftur til helstu. Svo leið að það er geymt í minni er að þú hafa helstu virka hér neðst. Og þá með hvern virka að hringja og bæta ofan á það, minni stafla bara ofan. Hugsaðu um það sem líkamlega stafla. Og svo þú verður ykkur öllum helstu breytur helstu aðgerðir þínar, allt sem er að gerast hér, geymdar. Og svo þegar þú hringdir teningur, fer það og það skapar afrit af öllum þeim breytur og það geymir þá hér á undan í öðrum stað. Og svo hvers vegna eigum við ekki sama? Ástæðan sem við umönnun er að við getum ekki bara nota breytur here-- breytur here-- og við breytt þeim, við gerum ráð fyrir þá einnig að breyta hér, ekki satt? Hugmyndin er sú að þeir eru vistuð á mismunandi stöðum í minni þannig að þegar þú ert að nálgast öðruvísi aðgerðir, hvað þér finnst er að gerast er í raun ekki að gerast vegna þess að minni bita eru ekki samtengd. Og svo spurning sem er virkilega mikilvægt fyrir okkur að eins konar skilja er, hvað ef, þegar við erum að keyra a program, the stærð af fall stafla frame-- svo líkamlega, hvernig mikið minni eigum við að gefa það? Kannski er það risastór virka svo við að gefa það sem mikið minni. En ef það væri minni við myndum þarf litla hluti. Svo hugmyndin er að þegar við erum að keyra a program stærð að virka er háð því hversu margir breytur og gerð breytur sem við viljum gefa hana. En hvað ef fjöldi variables-- og stærð þeirra, sem er staðráðinn í með yður kóðun en er ákvörðuð með því í raun notandi program. Þannig að ef ég vildi búa til fall sem tók strengi frá notanda, en ég veit reyndar ekki hversu stórt þessir strengir eru, það er erfitt fyrir mig að úthluta sérstökum magn af minni þörf. Ekki satt? Því ef þetta function-- ef þessi notandi inntak risastór band, það er að fara að búa til villur af því sem er kallað í raun stafla flæða þar sem þú ferð út fyrir mörk í minni sem þú hefur. Og svo þá hvað gerum við? Ef við getum ekki bara að búa til þetta risastór stafla sem getur bjargað allt, hvað eigum við að gera til að leysa þessi vandamál? Þannig að við erum að fara að fara og tala um þessa seinni gerð af minni og þá getum við talað um hvernig við getum notað tvö saman til að leysa þessi spurning. Svo nú erum við að fara að flytja upp til mismunandi hluta af minni í tölvunni okkar. Það er kallað að hrúga. Svo allt hrúga er er laug af lausu minni sem er hægt að úthluta virk. Svo sem getur breytt tíma kerfið er í gangi. Og svo svæði ónotaður minni sem getur vera allowed-- sem hægt er að úthlutað með virkni kallað malloc eða minni úthlutun. Svo, í raun, þegar þú ert að keyra forrit, þú getur breytilega búa minni frá hrúga og nota það allt niður hér. Og svo þá, allar aðgerðir þínar Hér geta nálgast hrúga. Og svo malloc, þessi hugmynd að David konar fljótt, stuttlega breitt yfir hinar í fyrirlestri, er bara leið fyrir þú þarft að stjórna minni. Eins og þegar þú ert bara að búa stafla aðgerðir, þegar þú ert bara hafa helstu virka með handahófi virka þínum, þú hugsa um þá eins og börn sem bara hljóp í burtu þegar þú varst búin með þá. Þeir voru í raun slæmt börn. Þú býrð þá, þér kenna þeim eitthvað, og svo þegar þú vilt aðgang að þeim aftur að þeir eru ekki þar vegna þess að þinn minni hljóp bara í burtu. En malloc eða hrúga, er leið að hafa betri börn, þar þú getur konar búið þá, úthluta þeim gildum, nota them-- sem hljómaði mjög bad-- nota þá þó þú vildir, en þá að vera fær um að stjórna þá og þá að losa um minni þegar þú þarft þá. Svo, þegar þú ert búinn með virka, börnin koma aftur til þín og þú ert enn að gögn þar. Svo leið að við malloc eða búa minni er við virka ógilt stjarna malloc stærð í bætum. Svo er það bara frumgerð fyrir hvers vegna við gerum það. Svo er dæmi við að búa bendi af tegund int-- Int STAR pointer-- jafn malloc stærð int. Svo the ástæða hvers vegna við gerum stærð af og ekki bara number-- vegna þess að við vitum öll að int er fjögur bæti, right-- en int er aðeins fjórum bæti á ákveðnum stýrikerfum. Hugmyndin fyrir okkur sem forritari er að við langar að búa til kóða sem hægt er keyra á öllum tölvum, ekki bara einföld tölvur okkar. Og svo er það þess vegna sem við eins og að nota Stærð og ekki bara númer fjögur. Er að skynsamleg að allir? Svo stærð of-- allt það er C virka eða rekstraraðila sem segir þér hversu margir bæti af minni er ákveðin tegund af breytu taka upp. Þannig að í þessu tilfelli, stærð int er fjórir. Fjögur bæti. Og malloc er að fara að losa upp fjórum bæti í hrúga þinn, þá getur þú þá notað í Main aðgerð til að vera fær um að geyma minni. Er allir á hreinu að svo langt? Já? Áhorfendur: Ég er ljóst en bara til að vera yfir clear-- ANDI Peng: OK. Algerlega fínn. Áhorfendur: --size af er [inaudible] getur í raun [inaudible] og það mun í raun gera Það sem við viljum það til. Það er ekki nokkur sauðakóðanum. ANDI Peng: Nei Áhorfendur: Það er eins og alvöru thing-- ANDI Peng: Þetta er alvöru númer. Áhorfendur: --we getur notað það. Það er raunveruleg. Cool. ANDI Peng: Stærð koma með C. Áhorfendur: Það gerir líf mitt hamingjusamari. ANDI Peng: Já. Svo ef þú ert latur forritari eins og ég er góður af stundum, Mér líkar ekki að leggja á minnið hvaða stærð af int er, Mér líkar ekki að leggja á minnið við stærð fljóta er. Stærð bara segir þér hvað það er og það er mikið auðveldara. Allt í lagi. Svo mikilvægur hlutur að þú krakkar vilja allt að hafa í huga þegar þú ert með malloc er að þér alltaf að athuga hvort það er null. Svo eins og ég sagði, aftur til að mynd af hrúgunni. Hrúga er bara þetta risastór stafla af minni sem þú hefur fengið. Og þú vilt vera fær um að taka klumpur minni frá því og nota það, ekki satt? En hvað ef þú ert ekki meira minni í þeirri hrúgu? Hvað ef ég hef nú þegar notað allar af því og ég reyni að malloc meira? Sem er ekki til. Jæja, það er hvers vegna þú ert fara að fá villu. Þú ert að fara að seg kenna. Þú ert að fara að hafa skiptingu kenna þar sem þú reyna að komast hluti sem eru ekki til staðar. Og svo hvernig við gerum að og hvernig við koma í veg fyrir það er að við athuga til að sjá hvort null bendilinn er. Svo ef ég væri að malloc eitthvað og ég hafði ekki meira minni, sem myndi prenta villu vegna þess að bendillinn aftur til þín er bara null. Og svo hvernig við gerum this-- þetta er bara frábært hönnun, bara minnið this-- er að allir skipti sem þú reynir að malloc neitt, þú ert að fara að þurfa að athuga hvort það er null. Vegna þegar þú reynir að fá minni frá hrúga, þú ert alltaf að gera viss um að þú hefur minni. Það er allt það er. Svo nánast þau þrjú línur af kóða, leggja á minnið. Í hvert skipti sem þú malloc, plop þá í. Þú ert að fara að þurfa þá. Vegna þess að ég ábyrgst að þú, við erum að fara að prófa þig á máli og tölvunni er að fara að springa vegna þess að þú ert ætla að reyna að fá aðgang að minni sem er ekki þar og það eru að fara að hrun og það er ekki að fara að vera góður. Svo bara bora það inn í heilann. Malloc, null. Good. Allt í lagi. Þá elr þetta Spurningin um hvað gerist eftir að við erum búin að nota þessi minni. Vegna þess að allt hugmynd um að hafa malloc var sem við höfum þessa vörðu sem við getum tekið minnið og þá getum við notað það. Ekki satt? Og þá hvað við þurfum að muna er að eftir að við erum búin með það, getum við þá losa hana. Slepptu því. Við getum látið það fara. Eða annað sem þú ert líka að fara að leka minni og fleiri slæmur hlutir gerast. Í meginatriðum, þegar þú ert að snerta minni, slæmur hlutir gerast ef þú Ekki gera hlutina rétt. Svo þú þarft að athuga að sjá, fyrst, ef þú ert með minni boði. Og þá eftir að þú ert búinn, þú vilt losa það og leyfa stýrikerfið að taka það til baka. Svo leið og við gerum það er bara að virka, ógilt ókeypis og bendillinn til þess hrúga af minni. Svo er dæmi ókeypis músina. Það er nokkuð auðvelt, einfalt, vil ekki að gleyma því. Svo að athuga hvort það er null, ókeypis. Allir góður? Svo enn og aftur, kóða sem þið getur konar fljótt taka litið á. Ég veit að það er mikið af nýjum setningafræði og það er allt í lagi ef þú ert eins og, Ah, hvað þýðir það aftur? Engar áhyggjur. Allt þetta átti að vera er að birta aðgerð, hvernig allt þetta Hægt er að nota saman. Svo það er sett saman eins og fullt af fortíðinni skyggnur fórum bara í gegnum í eitt forrit. Áhorfendur: Í leiðinni að við getum actually-- ANDI Peng: á þann hátt sem við getum raunverulega nota. Þú gætir plop að í kenni, þú getur keyrt það og það myndi vinna. Áhorfendur: OK. Svo er það alvöru? ANDI Peng: Það er alvöru. Já. Ég reyni að gera það þannig að letur eru mismunandi þannig að þegar ég slá alvöru númer letrið er letur númer og að huga númerið mitt er öðruvísi, en Ég veit ekki hvort það í raun virkar. Áhorfendur: Nei Ég held að-- ANDI Peng: OK. Áhorfendur: --sometimes [Inaudible] og ég er eins, það væri mjög sætur ef það var í raun nothæft hlutur en þá er það ekki nothæft hlutur. Mér finnst að þetta sé nothæft hlutur. ANDI Peng: OK. Já. Ég skal fara að ásamt. Vera eins, Davíð, eru börnin virkilega leiðinlegt þegar þú skrifar falsa kóða. Allt í lagi. Já? Áhorfendur: Svo PTR hér er í raun ekki músina, það er blokk af minni? ANDI Peng: Svo þú ert að tala um fyrsta línan eða sá hérna? Ertu að tala um þetta einn hér? Áhorfendur: The PTR er mismunandi hluti in-- ANDI Peng: Jæja, svo upp hér það sem ég er doing-- raun, við skulum fara bara í gegnum hér. Þessi tegund af tengsl í fallega öllum hugmyndum. Svo hér höfum við Int stjörnu PTR. Svo int músina, það er þar sem við erum í raun að skapa bendi sem bendir til heiltala. Jæja, það er að fara að benda á heiltölu. Og við erum að fara að malloc eða gefa það, nóg minni úthlutað til að geyma heiltölu. Svo fjórum bæti í þessu tilfelli. Og þá ef það jafngildir null-- jafn jafngildir null-- við erum að fara að prenta. Oh, þú ert með villu af því þú ert út af minni, ekki satt? Annars aftur einn, sem bara segir program að þú hafir fengið villu. Og þá ef þú gerir hafa að minni, það er að geyma hvað sem fá INT gefur þér í stað og setja það sem verðmæti músina. Svo það er í raun að fara að líkamlega eyða þetta gildi og setja hvað sem fá int ávöxtun. Og þá þú ert að fara að prenta hvað sem þeir tóku. Áhorfendur: Og það er að fara að vera í hrúgu? ANDI Peng: Það er að fara að vera í hrúga. Áhorfendur: Og svo að verður aðgengileg. ANDI Peng: Einmitt. Nice. Good. Áhorfendur: Svo þegar við frjáls PTR á þessu Stíga skrefið, við erum frjáls músina eða erum við að losað blokk? ANDI Peng: Já. Þannig að við erum að losað pointer-- vel, losað blokk af minni. Þannig að eina leiðin sem við getum jafnvel aðgang minnið er með því að hafa bendilinn. Ef þú ert ekki með músina, þú ert eins, ó, ég veit ekki hvar það er, ekki satt? Svo ef þú hefur losað þá, þú ert í raun frjáls að öllu blokk. Þá veit tölvan, ó, það er ekkert nothæft hér, Ég get bara sett sorp gildi aftur inn í það aftur. Áhorfendur: Svo heiltölur ekki til á því? ANDI Peng: Ekki heiltölur til? Sorry. Getur þú umorða spurninguna þína? Áhorfendur: Ég ætlaði, eftir að þú frjáls að bendillinn er heiltala sem þú færð, mun það enn til? ANDI Peng: Nei, það verður ekki. Eða að minnsta kosti það mun vera í þinn minni áður tölvan er hvað með það, en það er engin leið fyrir þig að fá það. Þar sem þú leystur bendilinn. Þú veist ekki hvar það er lengur. Já. Ég ætla að fara á hér. Phew. Þannig að við erum með fullt af hugmyndafræðileg erfiðleika minni stjórnun og við erum bara að fara að í raun að eyða 5, 10 mínútur að fara yfir setningafræði hlutum sem mun vera nothæf og gagnlegt fyrir ykkur, en ekkert of eðli þarna úti. OK. Þannig að við erum alveg skipta um gíra hér. Minni stjórnun, erfitt. Ábendingum, erfitt. Já. Það er mjög, mjög erfitt. Algerlega fínn. Það er hvers vegna stykki er að fara að vera mjög erfitt. En ef þú ferð og gera það sem við erum ætlað að gera, gera viss um að þetta eru null, ganga úr skugga um að athuga hvort hlutirnir eru null, ganga úr skugga um að losa um minni tryggja að hlutirnir eru ekki leka, verður þú að vera góður. Þú verður að vera stillt. Allt í lagi. Þannig að við erum að fara að flytja inn í þetta alveg nýtt hugtak af utanáskrift. Og svo áður en nú, Helsta leið sem við höfum átt samskipti við okkar forrit er í gegnum staðlað inntak og staðall framleiðsla. Ekki satt? Við sem notandi inntak hlutir og tölvan spits hana í flugstöðinni. En það eru aðrar leiðir fyrir okkur til að hafa samskipti við tölvuna með okkar forrit sem eru ekki bara ég líkamlega slá það í þegar ég er beðinn. Og hvernig við gerum það er gegnum meiri en gulrót og pípa tákn. Svo við getum líka lesið og skrifa í skrár með það. Svo leið að við gerum þetta er meiri en gulrót, allt sem er að gera er að skrifa hvað sem þinn skrá þarf að sérstakri skrá. Svo til dæmis, ef ég langaði til að keyra halló heiminn og ég vildi úttakið að vista í aðra skrá og ekki bara prentað út til mín, I getur bara gert meira en gulrót, output.txt. Svo er allt sem er að gera að taka hello.world program minn, og hvað framleiðsla er, það er sparnaður í skrá sem kallast output.txt. Svo leið að David gerði .csv með nöfnum nemenda, það er sama sem þú krakkar geta gert. Og hvað er sérstaklega gagnlegur eru hér meiri than-- tveggja meiri en gulrót tákn sem þú getur bæta við úttak skrá, sem þýðir að þú getur bara bætt ofan á það. Þú getur bara halda að bæta við output.txt hvers viðbótar hlutur sem þú ert að gera. Eða, ef þú byrjar að fá inn fleiri flóknar áætlanir, tveir meiri en gulrót, sem bara prentar út villa skilaboð. Svo segja að þú ert með risastór Fjárhæð villuskilaboð og þú vilt lesa í gegnum þau öll og þig vil ekki að þurfa að skruna gegnum flugstöðinni, þú getur í raun bara gert meiri en output.txt og það er að fara að spara allar villur þínar í skrá sem heitir output.txt að þú getur farið í gegnum og lesa. Áhorfendur: Hvar er textaskrá vistuð? ANDI Peng: Það er vistuð í sama Skrá sem program er. Svo þú ferð bara til baka og líta á það. Og það sama við getur gert fyrir inntak er að við getum í raun tekið the innihald af sumum skrá og við getum inntak sem þáttöku. Svo frekar en að þurfa að gera stjórn lína rök þar þig líkamlega að slá inn hluti hvert einasta skipti, þú geta í raun bara til skrá sem kallast input.txt sem bara setur það allt í. Og þá er pípa sérstaklega kaldur því það getur tekið úttak eitt forrit og nota það sem inntak af öðru forriti. Svo til dæmis, í Vigenère þinna krakkar ', það er þessi lína af kóða sem þú krakkar eru í gangi sem þú kannski kannski vissi ekki alveg hvað það var doing-- þetta ./generate 1000 pípa ./42. Ekki satt? Þannig að allir sem er að gera, ef við bara taka a líta á þetta skref fyrir skref, sem ./generate, sem þýðir að ég er hlaupandi program minn búa. Sem er að taka 1.000 á inntak þess. Svo ég vil búa 1.000 handahófi tölur og ég ætla að pípa that-- eða ég ætla að nota that-- framleiðsla sem innlegg í áætlun mína sem heitir finna. Og ég ætla að reyna að finna 42 af tölurnar mynda frá þeim 1.000 tölur. Er þessi lína af kóða sem gerir vit að allir aðrir? Svo á þennan hátt við erum að vista okkur tonn af skrefum. Við þurfum ekki að hlaupa búa, vista skrá og þá setja það inn í finna. Við getum bara gert það allt í einni línu. Svo hvað mynda er outputting, plop það strax aftur í að finna. Já? Áhorfendur: Og hvað varðar stjórn lína rök, er that-- það er þrjú stjórn lína rifrildi? Það er búið, find-- ekki, four-- mynda, 1.000, finna og 42? Eða er the-- ANDI Peng: Svo pípa er í raun ekki telja sem stjórn lína rifrildi vegna þýðanda eða á flugstöðinni veit að pípa, ó, ég veit að ég þarf að leita áður pípa því það er framleiðsla mín og ég verð að líta eftir pípa því það er inntak mín. Svo það veit that-- á ./generate og 1000, þá eru tveir bauð þá rök bara fyrir fyrstu áætlun. Og þá ./find 42 eru tveir stjórn lína rök fyrir aðra áætlun. Já. Allir gott um þetta? Svo bara raunverulegur fljótur, hvað þessir þrjár línur af kóða gera? Frekar einfalt. Einhver vilja til að segja mér hvað fyrsta línan er? Áhorfendur: [inaudible]. ANDI Peng: Hugsaðu um það eins og just-- hvað þýðir meiri en gulrót gera? Áhorfendur: Það setur eitthvað í næstu línu. ANDI Peng: Svo er það andstæða það? Áhorfendur: Það setur næsta hlutur í the fyrstur hlutur. ANDI Peng: Já. Svo er allt það er að gera þú ert keyra forrit .hello-- þú ert að keyra forrit sem heitir halló. Þú ert að fara að gefa það inntak kallast input.txt. Ekki satt? Vegna hugsa um það sem bara líkamlega að fara í Hello. Og þá þú ert að fara að bjarga framleiðsla í skrá sem heitir output.txt. Hvernig óður í the annarri línu? Langar þig til að segja mér hvað í annarri línu er? Áhorfendur: [inaudible]. ANDI Peng miður. Segja þetta aftur. Elliot. Áhorfendur: Svo það setur a Listi af tölum inn finna. ANDI Peng: Já. Svo finna, muna, í til að keyra finna þig þarf að vita hvar þú ert að leita. Og svo allt sem það er að gera hér er að það er að gefa þér a pre tengdur sett af tölur, þá finna er að fara til að leita þeirra fyrir fjölda 42. Og þá 15. Mundu, þú krakkar hljóp þetta þegar þú prófað kóðann þinn. Nú þú skilja hvað það var að gera? Áhorfendur: Það er að koma í skipanasettið að [inaudible] í þremur af þrír að fá the-- til að vinna leikinn. ANDI Peng: Já. Áhorfendur: Það inntak þeirra leiðbeiningar í áætluninni. ANDI Peng: Nánast. Svo tilda CS50. / Pset3 / 3x3, allt sem var að gera var að við búið til texta skrá sem hafði alla titla tilbúinn fyrir ykkur. Og svo fyrir leikinn til að spila, just-- þú við setjum bara að í forritinu. Svo við höfðum búið þetta Stjórn og þá erum við setja það borð inn forritinu sem hljóp það og skapað flísum á þremur með þremur. Það er allt að það var að gera. Og svo það var í raun galdur að fara á bak við tjöldin að þið ekki forrit sem við forritað. En nú þú krakkar skilja hvers vegna við gerðum það svo það er allt gott. Allt í lagi. Svo á meðan utanáskrift er mjög gagnlegur, C hefur almenna kerfi fyrir lestur og ritun skrár á eigin spýtur. Ekkert eðli erfitt hér svo ég bara að fara að fara í gegnum virkilega, virkilega fljótur. Allt það er er einhver memorization og gættu þess að þú krakkar eru setningafræðilega nota það á réttan hátt. Leiðin sem við myndum gera það er búa til tilvísun í skrána, við myndum opna skrána, og þá erum við myndi gera allt lestur og ritun og þá loka skrá. Þegar hlutur þú krakkar langar að hafa í huga er að á meðan að gera þetta, því við erum að loka og opna skrár, allar þessar skipanir eru í standard-- staðall I / O bókasafn. Svo tryggja þegar þú ert að gera þetta að þú hafir included-- # included-- venjulegu I / O punktur klst. Svo alvöru fljótt. Skref eitt, þú vilt búa til tilvísun til viðkomandi skrá. Og nú að við höfum gert ábendingum, þú krakkar geta sagt mér hvað þessi lína af kóða er að gera. Ekki satt? Allt sem það er að gera er að búa til bendillinn heitir skrá af gerðinni skrá. Því þú veist að það er að fara til að benda á skrá og þú ert að fara að opna skrána. Síðan sem þú ert, f open-- allt það gerir er að opna skrána. Þetta er skrá nafn. Og það er þrennt sem þú getur gert. Þú getur lesið, skrifað eða bæta. Flest almennt, strákar verður að lesa eða skrifa vegna þess að þú ert annað hvort að fara að vera inputting skrá eða outputting einn. Svo nokkurn veginn R og W eru tveir hlutir sem þú ert að fara að nota mest. Þannig að í þessu tilfelli, allt sem ég hef gert er búa bendi á skrá sem heitir skrá. Ég er að opna hana og ég er reading-- ég opna þessa skrá sem heitir file.txt og ég er að lesa hana. Það er allt sem ég er að gera á þessum tímapunkti. Og þá eru þetta bara virka á sem þú getur lesið mismunandi hluti eða skrifa mismunandi hluti eða sleppa að mismunandi stöðum þar sem þú vilt að líta. Allt eru þetta á netinu. Öll þessi þú getur bara Google. Engin þörf á að leggja á minnið þá. Þeir eru bara þarna, einnota fyrir notkun þína ef þú vildi eins og til að vera fær um að nota þá. Þannig að ef ég vildi bara lesa í einn staf í einu, Ég myndi gera skrá fgetc. Eða ef ég vildi að lesa í línu Textinn á þeim tíma, myndi ég gera fgets. Og svo framvegis og svo framvegis. Öll þessi bara gera öðruvísi Hlutur sem þú krakkar geta notað. Og þá loks, eftir að ég er búinn að lesa eða skrifa, Ég ætla bara að fara að fclose að skrá. Og muna, þetta er einn þeirra, muna, vinsamlegast gera þetta eða annað skrána þína er ekki að fara að vinna. Alltaf að opna skrá áður lesa eða lesa, þú þarft alltaf að loka það ef þú opnar það. Sama með minni, ekki satt? Þú þarft alltaf að taka minni og frjáls það. Hér verður þú að alltaf opna skrá áður en þú reynir að lesa það og þú ert alltaf að loka það eftir að þú opnar það. Svo er þetta líka á netinu. Ég ætla að skora ykkur til konar skrifa forrit sem prentar hello.world í skrá. Það er mjög einfalt. Það í raun bara felur að nokkrar línur af kóða sem voru bara skrifað áður. Þú ert að fara að setja þær saman og skrifa það. Svo nokkur mikilvæg atriði til að hafa í huga á meðan þú krakkar eru að reyna að nota þetta. Ef þetta er allt mjög gagnlegt fyrir pset þinn í þessari viku, er að fopen skapar skráar bendil. Það er í raun ekki líkamlega skrá. Allt það er að benda á að skrá sem þú vilt opna. Hvenær og þú ert í raun, þú ert að nota eitthvað af hinum virka eins fread eða fwrite eða fgetc eða fgets, er að þú ert bara farið í kringum þetta bendi á allar þessar aðgerðir. Svo þú ert í raun ekki að taka sem skrá og nota hana um aðgerðir þínar, þú ert bara að taka músina og setja það í þeim störfum þannig að þú getur notað. Og ef þú gleymir að loka skráin eftir að þú notar það, kerfið er að fara að leka minni. Í meginatriðum, allt það þýðir er að slæmir hlutir munu gerast og program vilja ekki virka rétt. Og svo á pset í upphaf, held ég það er stutt þar sem hann explained-- Nate explained-- hvað Valgrind var. Allt Valgrind er er leið fyrir þig til að ganga úr skugga um að þú ert ekki að leka minni. Svo þú krakkar vilja til að gera viss um að þú fylgist með því stutt því sem útskýrir það mjög vel hvað gerist. OK. Svo ég fór í gegnum það í raun, mjög fljótt því ég virkilega langar að fá að tala um sem pset áður þið fara. Hjartarskinn einhver hafa spurningar eðli? Aðallega allt er þetta bara setningafræði sem þú getur notað til að lesa eða skrifa skrá. Loks hvers manns hugljúfi. Við erum að fara að tala um pset nú. Svo, sýning af höndum, hversu margir af þið lesið sérstakur í þessari viku? Oh, það er helmingur. Það er gott. Þannig að þetta er í raun mjög, virkilega gaman pset í skilningi sem þér finnst eins og a leynilögreglumaður vegna þess að þú ert gera öll þessi raunverulega kaldur hlutur að þú vissi ekki að þú gætir gert en nú er það mjög flott sem þú getur gert þá. Og það er í raun mikið einfaldara en þú krakkar hugsa. Svo helstu helminga af þetta forrit er að þú ert að fara að sækja kóðann eða dreifing númerið skrifað af okkur. Og þú ert að fara að hafa eina möppu kallað BMP og aðra möppu kallað JPG. Innan BMP, þú ert fara að hafa þrjú forrit. Einn af þeim er þegar skrifað fyrir þig. Svo copy.c er forrit við höfum þegar skrifað fyrir þig að þú ert að fara að sækja. Allt sem gerir er að taka sem inntak mynd og gerir afrit af honum sem framleiðsla. Það er allt sem skrá er að gera. En hvað sem þú vilt gera fyrir whodunit-- svo hvernig margir af þú krakkar muna í fimmta bekk eða maybe-- þú ert younger-- kannski þriðja bekk, þegar þið haft leyndarmál skilaboð og þú þurftir að setja stykki af pappír yfir það til að lesa skilaboðin? Já? Svo er það allt sem við erum að gera nema þessum tíma fyrir tölvu. Þannig að við höfum gefið þér þennan fallega mynd. Lítur ekki eins allt annað en undir það er vísbending um að er að fara að hjálpa þér við að svara þeirri spurningu sem við biðjum þig. Í raun það sem þú vilt að gera er að inntak sem skrá, klip nokkur atriði í kring, kannski stilla liti, skipta hluti, svo sem hvað skilaboðin eru geta komið með. Svo inni eru falin pixlar og upplýsingar að ef þú skrifar kóðann þinn rétt er að fara að lesa og segja þér hvað þetta vísbending er. Og svo nokkrar góðar vísbendingar um hvernig þú vilt fara um að nálgast þetta. Þú vilt virkilega til að kynna sjálfur með skrá I / O vegna þess að við erum að lesa úr skrár og skrifa í skrár. Ekki satt? Og svo þegar við gerum að, sem felur í sér skrá I / O. Þú ert að fara að að kynna þér með, hvernig gera þú opnar Myndir Skrár? Hvernig skrifar að skrá og myndir? Hvernig heldur þú að gera alla þá hluti? Það er að fara að vera mjög gagnlegur. Í öðru lagi, hvernig ert þú að fara að vera fær um að breyta litir sem hreinsa upp þessa mynd? Það er líklega að fara að taka stilla punktar þínar eða RGB gildum þínum einhvers staðar þar, í raun. Það er ekki rétt leið að leysa þetta eins lengi og þú can-- eins lengi og þú getur konar stilla þeim punkta til að gera það líta út eins og eitthvað sem þér þykir vænt um. Það er allt sem við þykir vænt um eins og heilbrigður. Þannig að það er margar leiðir til að gera þetta. Bara leika í kring með það þangað til þú færð eitthvað sem virkar. Og þú vildi vera virkilega hissa hvernig nokkrar línur af kóða þú þarft að raunverulega gera þetta. Ég er að tala eins og þremur línur af kóða samtals sem þú þarft að skrifa í því skyni að gera þetta. Svo ef þú finnur þig skrifa 40, 30 línur af kóða, þú ert líklega að gera það rangt. Allt sem þú þarft að gera er eins konar leika í kring með litum og sjá hvernig það gengur. Svo þá við höfuð inn smá að erfiðara vandamál. Hér höfum við búa þar sem við erum að biðja þig to-- við erum að gefa þér sem inntak mynd og resizing þinn þessi mynd í eitthvað stærri eða eitthvað minni eftir stærð við gefa þér. Svo man í fyrirlestri sem David fljótt leit yfir hvernig upplýsingar er greind með tölvum að meina að það er ein tegund af skrá. Svo Word skrá hefur sérstakt stafir í framan sem segja tölvuna það er Word skrá. Sami hlutur með JPEG. Í þessu tilfelli erum við að fara til að gefa þér JPEG skrá. Allt sem við vitum er að JPEG skrá er mynd, ekki satt? En tölvan greinir það í mjög sérstökum hætti. Svo í byrjun allir JPEG skrá, þú ert að fara að hafa það sem er kallað punktamynd upplýsingar haus og punktamynd skrá haus. Allir þeir eru eru mismunandi stykki af gögnum að segja tölvuna þína, hey, hlusta upp, a JPEG koma upp og þetta eru mál eða einkenni þess JPEG. Svo þú krakkar virkilega að vita hvaða upplýsingar eru geymdar inni af þeim hausum og hvað er stærð af þeim. Vegna þess að þegar þú ert að keyra gegnum program, þú ert að fara til að vilja sleppa yfir þá upphæð. Ekki satt? Þar sem þú hefur ekki sama um að breyta haus, þér þykir vænt um að breyta því sem er eftir. Ekki satt? Svo tryggja þú krakkar vita hversu stór þessir hlutir eru. Í öðru lagi, áður en þú byrjar reyna að breyta stærð myndar þinnar, þú ert líklega að fara að vilja til að vista mál upprunalega. Ekki satt? Vegna þess að ef ég segi þér þetta mynd er 100 dílar við 100 punktar, og ég vil að þú að gera það fjórum sinnum stærri, þú veist að þú þarft að margfalda þá stærð af fjórum. Svo þá þú vilt úttaksskrá 400 af 400 dílar, til dæmis. Svo það er mjög gagnlegt fyrir ykkur að vista mál upprunalega. Og þá síðan, eftir þú ert búinn að breyta stærð, þú getur skrifað nýjar fyrirsagnir með þessir nýjar víddir eftir resizing. Og hvernig sem þú líkamlega Hægt er að búa í stórum dílar er að þú getur skrifað Ný RGB-- muna, RGB, allt sem stendur fyrir er rauður, grænn, og blue-- pixlar til út skrá. Og þú ert að fara til að vilja hafa mismunandi magn af hverju við köllum padding. Öll padding er eru rými fyrir og eftir myndir að segja your-- raun að segja myndina hversu stórt það ætti að vera að taka upp. Þetta er mjög abstrakt fyrir a einhver fjöldi af þú ef þú hefur ekki lesið pset sérstakur, en það er að fara að vera mjög gagnlegt þegar þú ert í raun að lesa í gegnum það. Þú ert eins og, ó, já, það er vit í. Hvers vegna þarf ég að gera þetta? Vit. Loks, þetta er sennilega einn af mest pirrandi forrit alltaf bara vegna þess að þú getur ekki segja ef það er að vinna eða ekki. Allt þetta program, batna, er gera er að, ef að keyra almennilega, það ætti að vera fær um að skyndilega batna 50 myndir sem týndust á disknum okkar. Og svo vandamálið með þessu forriti er að þú getur í raun ekki prófað það því annaðhvort þú batna þá eða þú gerðir ekki. Og svo þú konar bara að leika í kring með það, og ef forritið þitt er rétt, þú munt skyndilega sjá að í möppuna sem þú hefur fékk risastór magn af Myndirnar sem nú eru þar. Svo hvernig ég myndi nálgast þetta vandamál er, við erum að fara að gefa þér hvað er kallað card.raw skrá. Í meginatriðum, það er bara skemmd skrá með allar myndirnar geymdar sem þú ert að fara að þurfa að jafna sig. Svo þú ert líklega að fara að vilja að inntak card.raw, eða opinn, card.raw skrá og þú ert fara til að vilja vinna það að vera fær um að geyma JPEG. Þannig að ég myndi byrja á því að fylgjast með og geyma hver einstaklingur JPEG og þú finnur það. Þú ert ekki að fara að sig allt Skyndilega bara að búa til allar 50 JPEG. Þú ert að fara til að vilja halda utan um hversu margar þú ert að opna. Og þá þú vilt ganga úr skugga um, þegar þú ert skrifa til buffer-- þið vilja vita hvað ég er að tala um Þegar þú lesið spec-- þú vilt ganga úr skugga um að þú ert að nota óundirritaður bleikju biðminni. Og þá þú vilt að spyrja sjálfur spurningin um, hversu margir bæti eru í CF-- eru í kortið skrá? Það er hversu margir sem þú ert að fara að vilja til að lesa í biðminni þinn. Þú ert að fara til að vilja ganga úr skugga um tveir align því þá mun ekki hafa af handahófi minni leka út. Þú veist nákvæmlega hversu margir bytes þú þarft og hvernig margir bæti sem þú vilt að þeir hafa. Og svo að lokum, þú vilt nota fall sem kallast sprint-- s prenta f-- að búa sérsniðin skrá nöfn hverjum nýjum JPEG sem þú finnur. Svo eins og þú að búa til og finna JPEG í kortið, þú ert að fara til að vilja geyma þá og nefna þá. Ekki satt? Og svo þú ert að fara að vilt nota þessi virkni til að búa til nöfn sem getur geymt allt JPEG þínum. Og loks, ekki gleyma að loka hver JPEG eftir að þú ert búinn. Því það sem þú ert að fara að gera er að þú ert fara að sennilega hafa einhvers konar lykkju sem iterates gegnum öll JPEG þínum. Þú ert að fara að skrifa JPEG og endurnefna það og þú finnur það. En eftir að þú ert búinn með hverjum einasta JPEG, þú þarft að loka henni svo þú getur byrjað yfir og hreyfa á til the næstur mynd. Og svo eitthvað sem er virkilega gaman að við eins og til að gera, vegna þess að þetta er svo undarlegt vandamál setja en einnig furðulegur ánægjulegur vandamál sett, er að allar myndirnar sem við hafa fyrir þig, ef þú batna almennilega, allar myndirnar eru myndir af yndislegt kennslu starfsfólk, bæði við Harvardháskóla, á here-- og hér í Yale. Og ef þú skyldir batna öll þessar myndir og greina starfsfólk meðlimir í þessum kortum, og taka selfies við okkur ef þú finnur okkur um háskólasvæðið, fyrir hverja mynd sem þú hefur sent okkur, við munum gefa þér gígabæti af Dropbox pláss. Svo skulum gera stærðfræði hér. Ef það er 50 myndir og 50 kennslu starfsmenn, ef þú skyldir finna til 50 okkur, það er 50 gígabæta Dropbox, grundvallaratriðum, munum við vera að gefa ykkur. Svo sumir auka bætt hvatning ef þið ekki bara annt um að ná glataður myndir. Það er einnig nokkur bætt hvatning. Það er gaman vandamál setja. Það er í raun. Það er góður af pirrandi en þá verður mjög gaman þegar þú gera sér grein fyrir, vá, það er að vinna og nú er ég hafa allar þessar myndir sem ég hef bara búin til af mér. Einhverjar spurningar um pset? Fyrir þá sem er nú þegar byrjaði, ef þú hefur einhverjar spurningar, Ég kem hér í nokkra mínútur eftir kafla ef þú vilt tala við mig. Vel gert, krakkar. Fyrirgefðu, ég upplýsingar varpað á ykkur. Ábendingum virkilega, virkilega krefjandi og pirrandi. Og ég er virkilega ánægð með að þið var með mér. Við munum tala meira í dýpt um næstu viku eins og við að byrja að gera kjötkássa matskeið og fleiri aðgerðir sem fela í sér þá. Já. Svo ef einhver hefur eitthvað spurningar, ég ætla að vera í kringum. Takk fyrir að koma og taka meira nammi vegna þess að það er meira nammi. Cool.