ANDI Peng: Visos dešinę. Sveiki atvykę į sekcijos keturių savaičių. Tai graži diena iš čia New Haven todėl aš tikrai manau, kad nedaug sklaidos ir vaikams, kad prisijungė manęs skyriuje šiandien, ačiū. Taigi greitai, tiesiog, kol mes pradėti, už šiandien darbotvarkę. Mes ketiname eiti per Keletas trumpų skelbimai. Mes turime tikrai trenktas tvarkaraštį artėja artimiausias dvi savaites arba tiek, kad mes ketiname eiti per tai. Antra, aš žinau, visiems mėgstamiausia topic-- Aš tikiu, kad šis ištirpsta savo protą paskaitos metu, nesijaudinkite, Aš vis dar rūšies do not get it. Nieko tokio. Tai buvo pokštas. Aš iš tikrųjų jį gauti. Bet aš įsitikinkite, kad vaikinai jį gauti, taip pat. Taigi mes ketiname praleisti tikrai, tikrai gera suma laiko kalbėti apie rodyklė šiandien. Kaip matote, candy s aptarimas yra didžiulis ir šiandien. Mes tikrai ketiname išlaikyti that-- Taip, tai tiesa. Vartokite saldainiai. Aš ruošiuosi perduoti juos aplink dabar. Nesijaudink. Mes ketiname tikrai pabandyti išlaikyti žmonių cukraus kiekį kraujyje iki nes smegenys yra sudegsite kai deguonies šiandien, nes rodykles tikrai, tikrai sunku. Tada mes ketiname kalbėti apie atminties valdymas, kokios rūšies yra toje pačioje srityje. Ir mes ketiname pereiti į peradresavimo ir failą I / O kuris yra tik sintaksė, gražus dalykų, kad mes turėtume kalbėti apie. Ir tada galiausiai, aš ketina dar kartą bandyti palikti kaip 10, 15 minučių pset4. Štai dėl per kelias dienas, todėl mes vyksta tikrai natūra jums keletas naudingų patarimų, jei jūs jau pradėjau apie tai. Saunus. GERAI. Todėl kai kurie pranešimai Šio artėjančius savaitę. Rūšiavimas. Aš ne iš tikrųjų žinoti, Šis punktas, kaip ir daugelis iš jūsų vaikinai yra iš tikrųjų mano section-- viskas gerai ten? GERAI. Bet tiems iš jūsų, kurie mano skyriuje, tik pora komentuoja rūšiavimo. Pirma, tikrai gerą darbą komentuodamas. Tie iš jūsų, kurie nekomentuoja, jums žinote, kas esate, nes jums tikriausiai turiu keletą stiliaus taškų dinged šią savaitę. Tiesiog įsitikinkite, kad visi jūsų programos pridėkite keletą pastabų. Tikrai, stilius yra tikrai lengva gauti teisingus dalykus kaip sritį. Taigi mums, tiesiog įsitikinkite, Įsitikinkite, kad esate natūra pridėti trumpą aprašymą visiems jūsų programas, apie ką jūs darote. Secondly-- tai yra didžiulis klausimas iš į etatus daug praėjusį week-- todėl įsitikinkite, kad jūs įkelti į teisingas aplankas teisingai pavadintas programas. Ir priežastis, kodėl mes prašome tai nes mes, į rūšiavimo žinoma, iš tikrųjų paleisti scenarijų į savo kodas, kuris atsisiunčia automatiškai visi jūsų psets, veikia taisyklingumas bandymai juos visus, ir tada įkelia savo balus tiesiai į dienynams pildyti. Tačiau bet kuriuo metu, jei jus pavadintas savo programą neteisingai, IT varžtai up visą programa visiems. Ir taip, teisėtai, Šis gražus scenarijus kad mes parašyta, kad nėra visa tai mums, visiškai sugenda, jei jūs neturite jūsų programa pavadinta teisingai. Taigi tiesiog įkelti į teisingą Aplankas, juos pavadino teisingai, ir tada gyvenimas yra geras. Gaunu savo psets atgal jums vaikinai anksčiau nes man su jais laipsnio greitai. Taip. GERAI. Ir taip pat mes ketiname kalbėti about-- Jeilio turi tikrai, tikrai trenktas tvarkaraštis šių artimiausias dvi savaites. Taigi tiems iš jūsų, vaikinai Harvardo, šis reikalavimas netaikomas. Bet mums mieli vaikai Jeilio turime kažkas vadinamas kritimo break-- Atsiprašome, Harvard-- kur mes turime penkias dienas off mokyklos. Ir nors tai yra miela, ją rūšies sujaukia mūsų pset ritmą nes psets yra dėl Ketvirtadienis, penktadieniais. Ir todėl, jei mes ne čia Ketvirtadienis, Penktadieniais, mes negali turėti darbą už jus vaikinai dėl ketvirtadienį, penktadienį. Taigi, ką mes ketiname daryti is-- mes kaip 99% tikras, kad tai, kas vyksta, gali būti šiek tiek pakeisti, bet aš manau, kad tai subtle-- yra mes ketiname have-- šią savaitę yra normalu. Taigi, mes turime skyrių Antradieniais po darbo valandų visoje likusią savaitę ir tada pset4 yra dėl penktadienį. Tada, kaip jus vaikinai visi žinome, kaip Aš priminiau jums vaikinai praėjusią savaitę, mes turime viktorinoje 0 artėja trečiadienį. Ir taip, yra studentas save, Žinau, kad labai nedaugelis iš jūsų vaikinai iš tikrųjų bus dirbti prieš jūsų viktorina pset5 dvi dienas. Taigi, ką mes ketiname tikriausiai baigti darote, yra, kad pirmadienį vakare, mes ketiname iš tikrųjų, nuo 5:30 iki 7:00, turi trumpą apžvalgą sesijos temomis taikoma. Neaišku, ar tai peržiūrėti sesiją arba Q & A. Tai bus keletas peržiūros Rūšiuoti forma, kuria mes padengti Kai kurios temos atitinkami jums vaikinai. Ir tada pirmadienį ir antradienį naktys tos savaitę nuo 8:00 iki 11:00, mes ketiname turėti darbo valandomis. Šie biuro valandos dauguma greičiausiai bus daugiau tiesiog ateiti, paklausti struktūra jūsų klausimus apie bet sąvokos jums esate supainioti apie, ir jie rūšies eiti per su jumis ir peržiūros koncepcijos viktorinoje. Viktorina 0, jei esate Pirmadienį, trečiadienį skyriuje, bus trečiadienio metu class-- trečiadienį per klasę. Ir tada, jei esate Antradienį, ketvirtadienį skyriuje, taip pat bus klasėje ketvirtadienį metu. Jūs tikrai negali pasirinkti kurių vienas jums eiti. Jei esate Pirmadienis, Antradienis, Jūs turite eiti į trečiadienį. Jei esate antradienį, ketvirtadienį Jūs turite eiti į ketvirtadienį. Bet tada, kad naktį, mums miela darbuotojai, bus turi milžinišką viktorinoje apie vertinimą šaliai kurį mes gausite savo balus su Jumis tą naktį. Kokiu laiku? Neaiški, kas žino, bet jis bus būti su Jumis per 24 valandas kad vaikinai tikiuosi turėti tam tikrą penktadienį atsiliepimus. Ir tada mes turime tikrai trenktas savaitę. Taigi, pset5 yra vienas iš Sunkiausia psets per metus. Atsiprašau vaikinai. Ką mes ketiname pabandyti padaryti, tai mes ketiname turėti kai faktinis parama, kad savaitgalį. Nes, kaip jūs vaikinai gali matote, pset yra dėl prieš rudens atostogas. Neturime paramą vaikinai per rudens pertraukos ir todėl mes tikrai natūra noriu frazės tai kaip, galime gauti tai per su, Dirbkime tikrai, tikrai sunku Šie artimiausias dvi savaites, gauti šį testą ir pridėti šiuos du psets nuveikti su Ir tada jūs vaikinai turi gražią atpalaiduojantį septynias dienas negalvodami apie CS. Taigi tam, kad būtų atsitiktų, mes tikriausiai ketina perkelti savo skyrių iki sekmadienio popietėmis. Jis bus filmuojamas taip ne Nesijaudinkite, jei jūs negalite ateiti. Bet internete filmavimas bus ten ir prieinama kad jus vaikinai sekmadienį, Pirmadienis, antradieniais, dirbti pset5. Ir tada atėjo kritimo pertrauka ir ne AP, o tada mes einame atgal ir jos atgal į grind. Bet jis ketina būti miela savaitę rudenį pertraukos ir mes tikrai norime padaryti jį kaip streso nemokamas visiems, kaip įmanoma kuris Štai kodėl mes persikėlė pset, kad dėl Prieš rudenį po pertraukos, o ne. Kadangi it's-- Aš turiu galvoje, aš tipo jaustis kaip jis nugali turėti tikslą po rudens atostogų, jeigu ten terminas Parama anyways per rudens atostogas. Taigi, tai rather-- Manau mes mieliau sutelkti dėmesį į jį dabar. Ar kas nors turite klausimų apie tą grafiką? Viskas painu? Taip. Auditorija: Ar mes vis dar turime ant 21 paskaita? ANDI Peng: Taip. Taigi ant 21, ten bus paskaita, kad yra gyvas iš Harvardo. Aš nežinau, jei Davidas filmavimas arba jei jis iš tikrųjų paskaitas, bet tai bus prieinama internete jums vaikinai naudotis. Taigi tiesiog įsitikinkite, kad jums nesivadovauti valandą kažkur rudenį pertraukos taip vaikinai galite sugauti ant tos paskaitos. Taip? Auditorija: Taip. Atsiprašau. Aš čia yra couple-- ANDI Peng: Jokių rūpesčių. Čia šiek tiek saldainių. Auditorija: Ei, pagavau, kad. Taigi tik Priminti, ne rytoj, bet Trečiadienis po to, turime viktorinoje. ANDI Peng: teisinga. Auditorija: Ir jis ketina be-- kas iš Viktorinos formatas? ANDI Peng: O. Taigi mes atsiųsime el.laišką, kad iš apima visus, kad daugiau į gylį. Bet iš esmės, tai tiesiog apima Pagrindinės temos jau apėmė pirmoje pusėje semestrą. Mes turime peržiūros sesijų ir klausimų ir atsakymų, todėl jokių apie tai rūpesčių. Bet mes bus eiti per kad per daug. Auditorija: Ar tai bus, mes pareikšti savo kompiuterius ir kodą there-- ANDI Peng: Ne Tai bus jums, vaikinai, rašymo ir atsakyti į klausimus ranka. AUDITORIJA: O. ANDI Peng: Taigi mes suteiksime iš praktikos ir kita taip vaikinai gali norėti gero eiti atgal ir perrašyti Mario ranka tiesiog Norėdami įsitikinti, kad vaikinai turi pavyzdys, kaip padaryti, kad idėja. Nes kartais, kai rašote ranka jums pamiršti Kabliataškis ir kita ir tai tikrai blogai. Auditorija: Ar ne todėl, kad būtų [nesigirdi]? Kaip, jūs gaunate ant your-- kabliataškis ANDI Peng: Taip ir ne. Mes kalbėsime išsamiau apie tai, kaip viktorina išdėstymas ir kaip mes ketiname klasę. Bet iš esmės, tiesiog žinau, kad Apskritai formatas bus jums vaikinai arba žodžiu code-- atsakyti į pagrindinius klausimus. Jei aš paklausiau jūsų, kas yra biblioteka? Vaikinai turėtų žinoti, kas yra Biblioteka veikia ir parašyti, kad žemyn. Arba galiu pasakyti, parašyti programą, kuri spausdina Hello World ekrane. Vaikinai būtų rašyti, int main negaliojančiu printf hello world kabliataškis. Taip. Auditorija: Taigi jis nesiruošia būti bet kur [nesigirdi] Sunkumo lygis problemos nustatyti? ANDI Peng: Ne Ne. Mes won't-- taip. Parašyk į visumą žaidimas 15 iš 20 minučių, eiti. Ne, jis negali būti, kad. Ne. Auditorija: Gerai. Taigi tai yra trečiadienį. Per tą savaitę mes taip pat jau sunkiausia problema nustatyti? ANDI Peng: Ne Taigi problema nustatyti, kad jis dėl dieną prieš rudens atostogas. Schedule-- pašto iš tikrųjų buvo išsiųsti 20 minučių prieš apie visa tai. Taigi vaikinai tiesiog patikrinti savo laiškus. Jis bus ten. Taip. Nesijaudink. Saunus. Bet bendri klausimai dėl Skelbimai, rūšiavimo, viktorinos, kol mes neria tiesiai į patarimų, kurie bus suvartojama mūsų skyriuje metu dauguma šiandien? Saunus. Gerai. Taigi jūs vaikinai visi žiūrėti šį lovely-- Aš nežinau, ką jie vadina. Dalykas kur Claymation susprogdino save iki, nes juo nebuvo naudoti žymiklį teisingai. Na, jūsų programa ketina tikriausiai smūgis save up Jei nenaudokite patarimų teisingai, taip pat. Taigi mes ketiname padaryti Įsitikinkite, kad neatsitinka. Šiandien mes ketiname padaryti kai rodyklė įdomus. Aš ruošiuosi eiti užkliuvę taip sklandžiai, kaip aš manau, yra įmanoma mažos laiko tarpą. Tačiau yra tik tiek daug padengti kad aš tikrai noriu jums vaikinai, Jei ko nors nesuprantate, ne tik leiskite man nesustoti. Nes jei jūs neturite suprasti kažką, jūs tikriausiai nesiruošia suprasti ką aš pasakyti po to. Taigi nustokite mane ir užduoti klausimą. Nes jis visų rūšių iš gniūžtėmis kartu. Kaip, rodyklės sukelti į atminties švino į kitų dalykų. Ir todėl, jei jūs nesuprantate patarimų, sustabdyti mane ir mes figure it out ir gyvenimas bus gerai. Saunus. Taigi, kaip ir daugelis iš jūsų vaikinai paskaitos Dovydas minėta patarimų, Jūsų smegenys rūšies virto Jell-O? Taip. Geras. Mes ketiname pabandyti de Jell-O jūsų smegenys šiandien. Mes ketiname tikrai sistemingai eiti per ką tiksliai žymeklis, ką jis daro, ir kaip mes juos naudoti. Taigi, visi pointers-- taip paprastai su kintamųjų mes jau naudojant kodavimo, kaip kintamieji, pavyzdžiui, skaičių ar tinkleliuose arba plūdės, jie visi iš esmės vertės jiems priskirti taip pat kaip adresas nukreipta į tos vertės. Taigi, aš ruošiuosi padaryti tai dabar. Mes turime beveik neturi kreida bet tai gerai. Taigi, pavyzdžiui, paprastai būdas, kad mes buvo naudojant kintamuosius mes sukurti Pavadinimas tipo int kintamasis, tegul Tiesiog sakyk. Taigi čia mes turime int x ir mes Inicijuojama kad int iki 50. Taigi, čia, šioje atminties blokas mūsų Kompiuteriai mes saugomi 50 numerį. Taigi, kur rodykles ateiti į žaidimą yra kad jūsų kompiuteris itself-- patinka, čia fiziškai kietąjį diską į mano computer-- RAM jis turi tik baigtinį kiekį atminties. Jūs galite ne tik išlaikyti saugoti daiktus ant ko ant ko ir turi juos visus. Taigi taip, kad mes dinamiškai paskirstyti atminties, kad būtų galima laikyti, ko norime ir prieigos tai yra turėdami patarimų. Taigi įsivaizduoti savo atminties, į dešinę. Jei tai yra RAM kompiuteris, turite šių mažai bitai ar blokai ar baitų atminties which-- tai tik šiek tiek blokai, kurie buvo skiriami ant kietasis diskas arba RAM kompiuterio, ir per kiekvieną iš šių blokų Jūs galite laikyti įvairius daiktus. Taigi, pavyzdžiui, vienas masyvo šiame pavyzdyje čia yra vienas baitas, kuris yra susidedantis iš aštuonis bitus. Skaičius keičiasi priklausomai nuo operacinės sistemos kompiuteryje. Pavyzdžiui, kiek iš jūsų turi išgirdo 32 bitų palyginti 64-bitų operacinė sistemos? Būtent. Taigi visi tai sakydamas yra tai, kad memory-- kad būdas, kad jūsų kompiuteris valdo atmintis yra skirtingi. Kuris yra, kodėl tai tikrai Svarbu suprasti Kodėl atminties pati funkcijos, o nei atkreipti dėmesį į numerius. Taigi, mes do not really care kaip didelis šio masyvo yra, mes tiesiog reikia rūpintis kaip didelis mums reikia int būti, kaip didelis mes turime eilutę turi būti, kaip didelis yra rodyklė? GERAI. Taigi jis ketina būti daug sunkiųjų, tankus informacija. Aš norėčiau duoti jums vaikinai pora Comic Relief akimirkų čia. Vaikinai visi turėtų galėti suprasti tai dabar. Nes mes žinome, kad patarimų yra adresai, ir tie, kurie skiriasi nuo kintamųjų. GERAI. Saunus. CS anekdotai yra geriausias, Yeah? Taigi taip, kad mes einame apie kuriant rodyklę yra labai specifinė tarsi sintaksė. Kaip sukurti bet tipo kintamasis, tai bus konkretus sintaksės mes naudojame ją sukurti. Taigi, kai deklaruojant jokios žymeklį, rodyklė yra tik essentially-- Manau, kad svarbu dalis rodyklės yra kad kadangi kintamasis tiek vertės ir adresas, rodyklė yra adresas. Jo vertė yra adresas. Taigi tai yra adresas saugomos skirtingu adresą. Jei tai daro kokią nors prasmę. Mes eiti per tai išsamiau, bet tai bendrinis forma iš why--, kaip spausdintuvas yra saugomi. Taigi taip, kad jums sukurti rodyklę yra atlikdami bet kokio tipo duomenis kad žymiklis vyksta būti klasifikavimas ir then-- su star-- ir tada iš rodyklės pavadinimą. Taigi čia, jei mes norėjome sukurti rodyklę, kad nukreipta į sveikojo skaičiaus, ir mes norėjo su rodykle pavadinimas turi būti x, mes padaryti int star x. Taip? Auditorija: Ir todėl, jei ši eilutė jums padaryti int x, bus int žvaigždutė x nurodyti x vietą jūs apibrėžiant po to? ANDI Peng: Tikrai geras klausimas. Mes eiti per tai pora skaidres vėliau. Taip. Ir tada tas pats su char ir tas pats plūdės. Tiesiog žinau, kad šiuo metu mes sukūrėme rodyklę, mes ne iš tikrųjų nustatyti ji lygi nieko dar. Mes ne iš tikrųjų nuorodos ją. Tas pats čia, kai jums sukurti kintamąjį, Jūs sukūrėte kintamojo vardą, jūs ne iš tikrųjų nustatyti vertę į jį. Tas pats čia. GERAI. Taigi, kaip mes nustatyti vertes patarimų? Tai iki klasifikavimas ir dereferencing. Taigi taip, kad mes galime nuoroda varia-- rodyklę, iš esmės mes grįžtame adresą atmintyje iš kurių yra saugomi kintamasis. Taigi, jei aš turėjo pointer-- aš atkreipti šį kartą mes gauname į kitą skaidrę, bet tiesiog žinau, kad iš esmės, and-- į ampersendo ir variable-- visa tai daro, yra pasakyti adresą kur yra saugomi kažką. Ir dereferencing yra priešinga to, kuri yra tik žvaigždė. Žvaigždė tiesiog suteikia jums tikrasis saugomi ne tuo adresu duomenys. Taigi vienas suteikia jums adresą saugomi adresą, kitas suteikia jums tikrasis vertė saugomi adresu. Taigi, du iš jų duoti Jūs skirtingi dalykai. Dar kartą, skaidres Visi internete, kad be rūpesčių jei jus vaikinai negali kopijuoti tai žemyn laiku. Taigi leiskite pažvelgti Šiuo pavyzdyje. Taigi mes turime milžinišką atminties masyvas čia, tiesa? Kur mes tiesiog blokai atmintį arba baitų atminties, kurioje mes galime laikyti skirtingus dalykus. Leiskite tik pasakyti, tai yra Adresas taškai atmintyje. Taigi bet kuriuo metu turite - žr 0x, visa tai pasakoja jums, kad tai šešioliktainis skaičius. Kaip jus vaikinai visi žinome, skaičiai gali būti grindžiamas skirtingais pagrindais. Bazinė 10 yra tai, kaip mes paprastai interpretuoti numerius. Taip pat pagrindas 2, kuris yra dvejetainis. Ir šiuo atveju, šešioliktainis yra pagrindas 16. Tai tiesiog kitoks būdas pasakyti nuo nulio iki 10-- arba nulis, devynis ir tada taip pat A, B, C, D, E, F. Taip pat nuorodos skirtingus numerius. Davidas perėjo tai paskaitos trumpai. Jei vaikinai supainioti, Tiesiog Google ją. Yra tikrai paprasta būdai kas šešioliktainis skaitmuo yra. Visa tai tikrai tinka dabar yra už jus vaikinai žino, kad šešioliktainius skaitmenis C pasakoja you--, kad paprastai jums pasakys, kad tai rodyklė. Arba tai yra adresas. Taigi, šiame pavyzdyje čia, tarpinis junginys x yra lygus 5. Mes sukurti integer-- Atsiprašome, iš tipo kintamasis sveikasis skaičius ir mes Inicijuojama iki 5. Taigi čia mūsų atminties laive, mes galime matyti, kad x yra ne iš 0x0 adresą ir vertė, kad jūs saugomi viduje jis yra 5. Tai turėtų prasmės visiems, tiesa? GERAI. Ir kas tada mes padarėme antroje eilutę kodo yra tai, kad mes sukūrėme iš tipo int žymeklis. Štai ką int žvaigždučių žymeklis daro. Ir tai lygu, kad Ampersand x yra suteikti jums kažką adresą. Taigi, kad x adresą Šis pavyzdys yra 0x0. Ir taip, kad adresas yra saugomi toje rodyklę. Ar tai prasminga visiems? Taigi manau, this-- galvoti apie pointers-- čia Jeilio turime PO BOX sistema kur kiekvienas studentas turi siuntimų Adresas, kuriuo galite eiti į LW rūsyje ir jūs galite tiesiog eiti ir paimti ką reikia iš šio adreso. Tas pats vyksta čia į kompiuterį. Jūs turite šiuos atminties baitus, kad galite saugoti informaciją į, bet siekiant žinoti, kuris informacijos dalys Rungtynės iki to, ką jūs bandote rasti ir kur jums reikia rodyklę, kad jums pasakys, kaip ten. Taigi, pavyzdžiui, man, mano pašto dėžutė, Turiu konkretų penkių skaitmenų numeris. Štai mano adresą. Taigi aš galiu fiziškai eiti į atmintį, Galiu surasti adresu, Aš galiu eiti į tą pašto dėžutės ir prieiti prie duomenų viduje. Ar tai prasminga visiems Jūsų kompiuteris yra iš esmės daro tą patį dalyką. Taigi, visi žymeklis daro tai, kad tai tiesiog sukurti atminties ir jos atminties duomenys yra iš tikrųjų iš ko nors kito adresą. Tada galite eiti ir rasti, kad. Kiekvienas geras? Kiekvienas geras su manimi iki šiol? GERAI. Saunus. Gerai. Taigi beveik tas pats, kaip ir anksčiau. Taigi, mes turime, pirma, kintamas vadinamas x, kurioje case-- Aš ruošiuosi keisti šią vertę iki 5. Leiskite tik pasakyti adresą tai atmintyje yra 0x0. 00. Didysis. Taigi, mūsų sekundę eilutę kodo, mes ketina sukurti rodyklę vadinamas PTR žymeklis. Ir kad Adresas, tegul tik pasakyti, kad tai 0x01 atmintyje. Ir mes iš tikrųjų norime store-- į ampersendo x suteikia jums tai, ką x buvo adresas. Ir x adresas buvo 0x00. Taigi, šis žymeklis dabar iš tikrųjų turi adresą saugomi kaip savo vertę, kas x buvo. Kiekvienas su manimi iki šiol? Saunus. Ir tada, taip, kad mes kopijuoti, kad yra, jei mes būtume deklaruoti ir inicijuoti kitas atminties tipas int blokas. Teisė? Tai būtų int. Tai būtų galima pavadinti kopija. Ir jūs ketinate get-- taip žvaigždė žymeklis suteikia jums faktinius duomenis iš šio adreso. Ampersand suteikia jums adresą, žvaigždė suteikia jums duomenis. Tokia tvarka, kad žymeklis duomenys. Ši rodyklė nukreipta į 5. Ir taip ši funkcija here-- žvaigždė pointer-- eina, gauna kokia yra tai blokas ir saugo jį čia. Kiekvienas aišku, kaip tai atsitiko? Taigi du operatoriai teisę there-- Ampersand ir star-- tiesiog tai skirtingi dalykai kai naudojamas ant rodyklės. Vienas paleidžiama jums adresą, vienas paleidžiama jums į faktinę vertę. Todėl įsitikinkite, kad kai jūs vaikinai yra kodavimas, kad jums nereikia painioti dviejų nes jie labai skiriasi. Čia mes turime gražią pavyzdį, 0x01. Štai tikrai gražus nedidelis skaičius prisiminti. Be jūsų faktinis kompiuteryje jūs ketinate turėti milžinišką asilas skaičių, kuris yra kažkas, tai nėra gražus, nėra malonus. Tai bus kai šiukšlių vertę. Ir taip jis ketina tikrai, tikrai bałagan savo programas. Tai labai svarbu dabar, kad mes turime pagrindai žemyn why-- panašūs dirbiniai, kas vyksta, kai fiziškai vykdote tas kodas blokai. Everyone-- Yeah? Auditorija: Taigi int x lygus int kopiją? ANDI Peng: Nėra, nes šiuo atveju, int x-- iš x-- vertė yra lygi 5, tiesa? Ir tada int kopija lygus 5. Taigi, jei jums buvo prilyginti juos tarpusavyje, nes jie sveikieji skaičiai, Taip, jie būtų įvertinti, tiesa. Bet jei jie įsipareigojimų atmintyje, kaip vienas, kad padarė Dovydas Pavyzdžiui metu kad skiriasi, nes jie nuorodos Vietų atmintyje adresai ir jie būtų prilyginti klaidinga. Taigi čia būtų tiesa, nes jūs tiesiogiai lyginant values-- integers-- bet kiti esate klasifikavimas taškai. Kadangi eilutė yra masyve, ir all-- mes kalbame apie tai later-- bet masyvas yra iš esmės tik Rodyklė iš simbolių atmintyje krūva. Taigi tie, kurie šiek tiek skiriasi. Bet šiuo atveju, taip, galite tai padaryti. Auditorija: Ar galite paaiškinti Kitoje egzemplioriaus adresas? ANDI Peng: Taip. Štai just-- aš nebuvo užpildyti vertės bet tai tik keletas atsitiktinių kita šiukšlių vertė, kad mes nerūpi. Nes kai paleidžiate programą jūs suprasite, kad mes ne iš tikrųjų tikrai rūpi, ką faktiniai adresai, mes tiesiog reikia žinoti kas adresais. Taip. Auditorija: Žvaigždė šalia Int Antroji eilutė, kad skiriasi than-- ANDI Peng: Taip. Auditorija: --Draugai dereferencing ir nuorodos į žvaigždę? ANDI Peng: Taip. Taigi C-- autorių kas nusprendė rašyti kalbą C-- nebuvo labai protingas. Jie nebuvo labai protingas bando išsiaiškinti, kodėl turėtume tai padaryti. Jei tai buvo man, aš tikrai naudoti du skirtingus simbolius. Tačiau jie nuspręsta naudoti tą patį vieną. Taigi po int žvaigždė, kad pasakoja kompiuterį kad jūs ketinate sukurti rodyklę. Bet jei jūs bandote dereference something-- kitaip tariant, eiti į adresą ir ištraukite duomenys iš somewhere-- žvaigždė yra skirtingai naudojamos. Taigi vaikinai tiesiog būti atsargūs, apie ne Messing du reikmėms. Saunus. Taip? Auditorija: Taigi tik pakartoti įsitikinkite, kad aš following-- ANDI Peng: Visiškai puikiai. Auditorija: --in kairėje pusėje kad skaidrių, mes dalykas, kad mes žinome. Mes pareiškiame sveikasis skaičius [Nebegirdėtumėte], kad yra lygus 5. ANDI Peng: Taip. Auditorija: Teisė. Ir tada mes turime int žvaigždė dalykas ir kad sako, kad gerai, rūšies, kaip mes paskelbta sveikasis skaičius, dabar mes skelbiantis žymeklį. ANDI Peng: Teisingai. Teisingas. Auditorija: Teisė? Ir mūsų žymeklis yra PTR. ANDI Peng: Yep. Dėl rodyklės vardas PTR. Pointer. Auditorija: Ir tada jis lygus NX kad tiesiog pasakoja C kad ji nori prieiti prie vertę sveikasis skaičius x-- vertę, sveikasis skaičius x buvo paskirtas. ANDI Peng: Būkite atsargūs, nes Ampersand x tikrųjų pasakoja you-- kompiuterį, kad jums nori traukti Kas yra X adresą. Taigi Ampersand suteikia jums Adresas, žvaigždė suteikia jums vertę. Auditorija: Taigi mes norime adresą. Tarkime x buvo at-- ANDI Peng: Mes iš tikrųjų žinoti, kas x yra, tiesa? Nes mes žinome, kad x was-- Aš tikiu todėl šis iki bet tegul tiesiog pasakyti, savavališkai, jis buvo 0x00. Teisė? Taigi mes žinome adresas yra 0x00, ir todėl, kai mes einame ir Ampersand x mes žinome, kad turėtų įvertinti, 0x00. Kuris yra, kodėl mes saugomi, kad kaip mūsų žymeklis vertę. Ar tai prasminga? Auditorija: Taip. Ir kopijuoti eina į dereference ptr-- ANDI Peng: Teisė. Auditorija: --which yra rodyklė kad mes pareiškė, kad mums pasakoja adresas sveikasis skaičius x. ANDI Peng: Taip. Auditorija: Ir tai vienas atvejis, žvaigždutė PTR lygus x vertę, kuri yra lygi 5. ANDI Peng: teisinga. Auditorija: cool. Ir tai yra paprastesnis būdas gauti kad ar tai, kad tik way-- ANDI Peng: Taigi dabar ją neatrodo labai logiška mus praleisti visą šį laiką daro Tai super sudėtingas dalykas, kai visi mes padarėme tiesiog sukurti du sveikieji skaičiai su 5 vertę, tiesa? Tai neturi prasmės. Bet kai mes pereiti per atminties paskirstymas and-- mes eiti per, kodėl tai gali būti patogu ir naudinga vėliau. Patikėkit manim, kai sakau mes darome ne tik sukurti šių savavališkų funkcijas už jus vaikinai mokytis, nes mes bando netvarka su jumis. Yra iš tikrųjų naudoja visi šie daiktai ir mes kalbame apie juos. Auditorija: awesome. ANDI Peng: Taip. Auditorija: [nesigirdi]. ANDI Peng: Geras klausimas. Auditorija: [nesigirdi]. ANDI Peng: Tai ne. Tai tikrai nėra. Auditorija: --two kintamieji kad taip pat lygus [nesigirdi]. GERAI. ANDI Peng: Taip. GERAI. Prieš aš judėti į priekį, yra visi aišku? Aš žinau, Taylor, jūs turite į šiek tiek vėlu. Viskas gerai. Tai internete. Jūs žiūrėti pirmasis 20 minučių ir jums bus viskas gerai. GERAI. Saunus. Gerai. Taigi tai iš esmės rūšies panašus dalykas, kad mes tiesiog padarė. Tai tik grafine forma. Jei buvo stebėti, ką tiesiog atsitiko, int x lygus 5, visi mes padarėme šiuo metu yra sukurti kintamąjį pavadinimu X tipo int. Mes ketiname saugoti vertė 5 viduje jį. Nėra žymeklis, nes mes turime ne iš tikrųjų sukūrė žymeklį dar, tiesa? Ir tada kitą linija, int žvaigždė žymeklis, tai kur mes iš tikrųjų fiziškai sukurti rodyklę ir mes nustatant, kad lygi arba nuorodas rodyklė, kad Ampersand x. Kur yra ir kur atminties tai atsitiko. Aš ne iš tikrųjų nerimauti sudarančių vertę šiuo metu. Bet šiuo atveju, kad taškas jums būtų lygus. Ir tada ten, žvaigždė žymeklis yra dereferencing. Štai kur mes traukiant informaciją. Taigi, kad ne x reikšmė yra iš tikrųjų bus lygi 35. Taigi šiuo metu, mes iš esmės tik perkurta x 35 be faktiškai neliesti x. Tiesiog per žymeklis , kuris buvo nukreipta į x, mes iš tikrųjų gali pakeisti tai, kas x buvo. Aš ruošiuosi padaryti tai, kaip gerai. Taigi čia mes sukūrėme kai atsitiktinai adresas čia. Leiskite tik pasakyti, 0x00 dar kartą. Leiskite tik pasakyti, kad tai adresas. Ir mes sukūrėme sveikasis skaičius pavadintas x o vertė Aš priskirtas Tai 5. Antroje eilutėje, INT pointer-- todėl dabar mes gavau šį Antras dalykas čia vadinamas pointer-- ir mes ketiname to-- tegul tiesiog pasakyti tai kai kurie kiti atsitiktinai atminties adresas. Taigi mes ketiname nustatyti tai lygus kokia tai buvo. Ir tai žymeklis ketina nukreipta į X reikšmė Ir tada, jei mes pakeisime the-- jei mes žvaigždė žymeklį, kad vyksta į vertė mūsų rodyklę. Šiuo atveju jis ketina sekti ši rodyklė virš šio X reikšmė ir jis ketina pakeisti jį į 35. Efektyviai, mes tiesiog pasikeitė x neliesdami x. Per tik nuorodos į rodykles, mes gali eiti ir pakeisti x vertę. Ar tai prasminga? Taigi tokiu būdu, mes iš tikrųjų galime pervadinti ir rechange ir perleisti vertės dalykų, kad mes ne iš tikrųjų padaryti save. Ar tai prasminga visiems? Saunus. GERAI. Taigi kompleksas grafinis čia. Eiti pagal kiekvieną eilutę. Iš esmės, tiesiog daryti tiksli Tas pats, kad aš tiesiog padarė. Prieš pereiti, aš tikrai noriu tiesiog padaryti kad kiekvienas tikrai aišku, apie tai. Taigi čia, kodas, kad mes turime yra int lygus 3, b lygus 4, c lygus 5. Taigi mes sukūrėme tris sveikuosius skaičius pavadintas a, b ir c, kad yra lygus 3, 4 ir 5. Ir tada mes sukurti tritaškius kad taškas į kiekvieną iš šių kintamųjų. Ir dabar mes ketiname eiti per esmės kas atsitinka, kai jums veikia ant jų. Taigi atkreipti juos. Paimkite paper-- I do not lapą žinoti, jei jus vaikinai visi turi popierius, bet tie iš jūsų, kurie ne, o gal skolintis iš Tiems, kurie padaryti. Paimkite popieriaus lapų ir eiti pagal kiekvieną eilutę. Ir kiekvieną operaciją, kad jūs, Noriu vaikinai iš tikrųjų rašyti tai, kas yra a, b ir c šiuo metu. Ir kas yra adresus, kas yra kad patarimų, kurie žymi A, B ir C Šiuo atveju? Ir tada Tikimės, kad šis bus rūšies pravesime jus vaikinai per kiek galvoti apie rodykles. Mes neketiname eiti per visi iš jų. Gal aš duosiu jums five-- panašiai, tris minutes. Pradėkite nuo pirmojo nedaug. Oh. Oi. Auditorija: Antroje eilutėje, kodėl nėra žvaigždučių [nesigirdi] kintamasis? ANDI Peng: Įsiminti į operatoriai, pirmą savaitę, mes kalbėjome apie tai, kaip jei jūs plius lygūs, kad tik reiškia lygus plius c. Šiuo case-- todėl tai yra dar vienas būdas, kuris galėtų būti naudojamas žvaigždutė. Be to, nuorodos ir deklaruojant patarimų, prisiminti, kad ji taip pat reiškia dauginimąsi. Taigi šiuo atveju, tai reikia tik būti lygus kartų c. Štai kaip skiriasi būdas raštu. AUDITORIJA: ar lygi kartų c. ANDI Peng: Taip. Auditorija: Ką reiškia, jei ji sako ženklui laišką? ANDI Peng: Ampersand priemonės jūs ketinate that-- esate vyksta į vietą, žymeklis yra nukreipta ir traukiant adresą. Taigi Ampersand suteikia jums adresą, žvaigždė suteikia jums realią vertę ten. Auditorija: Ar mes remiantis pagal kiekvieną eilutę? ANDI Peng: Jūs esate remiantis pagal kiekvieną eilutę. Taigi tiesiog eiti į vieną liniją laikas ir then-- jus neturite jaudintis apdailos visa tai. Pabandykime gauti per gal du, trys eilutės ir tada mes sušaukti ir baigti tai. Tai visiškai Gerai, jei jus vaikinai yra prarastas. Tai yra labai sunku sąvoka. Jei vaikinai nerimauja, kad klasės eina kaip šis, kaip Dovydas tarė: taip nėra. Mes pasieksime lygį konceptualus viršūnė sunkumų ir tada ji ketina būti žemyn šlaitų. Taigi jūs vaikinai yra beveik ten. Mes turime daug saldainių gauti vaikinai per kupra. Manau, gana daug po kritimo pertrauka mes būsime per kupra ir gyvenimas bus gerai dar kartą. Taigi nėra išvis rūpesčių. Gerai. Aš duosiu jums, vaikinai, 20 daugiau sekundžių susivynioti. GERAI. Gerai. Paimkime Pabandyti tai. Kaip jus vaikinai man atsakymus, Aš tik ketina įvesti juos. Ir tikiuosi we-- galiu? Aš iš tikrųjų negali įveskite jį. Aš piešti ant lentos. Taigi čia, šioje pirmoje eilutėje mes turime lygus b žvaigždė C. Taip pat Elliotas išvedė tikrai, tikrai geras dalykas. Nes Aš pamiršau, kad be du būdai mes galime naudoti žvaigždučių simboliu, ten tikrai Trečias būdas. Daugybos. Ir taip tiesiog neturi susipainioti, nes kad yra pirmasis būdas, naudojant žvaigždė. Tai tiesiog sakau kompiuterį kad aš apie sukurti rodyklę. Antrasis būdas daro žvaigždė savo rodyklė, kad pasakoja žymeklį, kurį norite prieiti prie duomenų, tuo rodyklę. Ir tada, žinoma, yra tiesiog paprasta daugyba tarp dviejų numerių, pasakys kad aš noriu padauginti du. Taigi ten daug būdų mes galime naudoti žvaigždutę. Negalima susipainioti. Tiesiog įsitikinkite, kad jums, vaikinai supranta ką visi trys darai. Taigi šiuo pirmoje eilutėje, lygus b kartus c. Taigi eikime per ką yra, kas yra b, c, kas yra? Ir kas yra rodyklė, The rodyklė B, ir-c žymeklis? Kas yra tie visi lygus? GERAI. Taigi, mes pradėti su prilygsta 3, b lygus 4, c lygus 5, tiesa? Taigi, po to pirmoje eilutėje, gali nors pasakykite man, ką yra? Taip. Nesivaržykite tik šaukti atsakymus. 20. Geras. Kas b? Auditorija: 4. ANDI Peng: Kas c? AUDITORIJA: 5. ANDI Peng: Šaulys. Geras. Kas yra PA, PB ir PC? Auditorija: 000001 ir 002? ANDI Peng: Taip. Taigi rūšies triukas klausimą bet tikrai ne todėl, kad čia aš išsitraukė faktinius prisiminimus. Bet, nes, pavyzdžiui, mes do not iš tikrųjų žino, ką tie skaičiai yra, mes galime tik pasakyti, ampersendo. Aš net nežinau, jei aš gali atkreipti ampersendo. Tai like-- kaip jūs tai darote? Auditorija: Kaip piešti aštuoni. ANDI Peng: Kaip ir aštuonių. Šitaip. GERAI. Auditorija: Bingo. ANDI Peng: Killing ją. Taigi Ampersand a, galite tiesiog padaryti. Nes mes ne iš tikrųjų rūpintis, ką ši vertė yra, ir tai kai ilgio asilas vertė Anyways, mes naudojame tik giong pasakyti Ampersand a. Tada kas pb? Auditorija: [nesigirdi]. ANDI Peng: Taip. Saunus. Gerai. Lengvas pirmoji eilutė. Mes turime tai. Pointeriai yra lengva. Viskas gerai. Antroje eilutėje. Ir taip žvaigždė lygu yra tas pats dalyko kaip pasakant lygus kartų c. Tai tiesiog lengviau būdas raštu. Taigi mes ne bando padaryti taško arba nieko čia. Taigi, padaryta su pirmosios linijos. Tai, kas yra antroje eilutėje po to, kai padaryti lygus Times C? Auditorija: 100? ANDI Peng: Tai 100. Geras. Kaip apie b? Auditorija: [nesigirdi]. ANDI Peng: Kaip apie C? Auditorija: [nesigirdi]. ANDI Peng: Ir kaip apie rodykles? Ar they-- tas pats, tiesa? GERAI. Dabar trečioji eilutė. Šiek tiek sudėtingesnis. b lygus žvaigždė pa. Ar kas nors pasakykite man, pirma, ką žvaigždės PA lygi? Auditorija: Tai vertė kad manimi saugomi a. ANDI Peng: Būtent. Ir kas yra vertė kad manimi laikomi esant? Auditorija: 100. ANDI Peng: Gerai. Taigi, ką gi bus po įvykdydamas kodo eilutę? Auditorija: [nesigirdi]. ANDI Peng: Ką apie b? Auditorija: 100. ANDI Peng: Taip. Ir tada visa kita yra gana daug nepasikeitė, tiesa? Kadangi mes ne jį liesti. Saunus. Ketvirtoje eilutėje. Šiek tiek sudėtingesnė. Taigi pc-- kartą, kompiuteris yra žymeklis kad atkreipė dėmesį į c-- lygus Pa. Kas yra? Auditorija: 100. ANDI Peng: Kas b? Auditorija: 100. ANDI Peng: Kas c? AUDITORIJA: 5. ANDI Peng: Kas PA? Auditorija: Ampersand a. ANDI Peng: PB? Auditorija: Ženklas b. ANDI Peng: Ir sudėtinga, kas yra PC dabar? Auditorija: Ampersand a. ANDI Peng: Šaulys. Woo Hoo. Vaikinai pamatyti? Tai yra gerai. Tai nėra labai blogai. Mes turime daugiau saldainių, jei tai dar ne viskas teisus, bet manau, kad viskas gerai. Ir mes ketiname eiti per tik vienas daugiau, kol mes hit sunkiau tuos. Atsakymai Turiu čia. Iš esmės, žinome, kad tai yra kaip matematika šiuo klausimu. Jei turite paprastus lygtis kaip plius b, c kartų, tai lengva padaryti. Ir, kai jūs pradedate plečiasi nuo IT, tiesiog eiti tvarką operacijas. Tas pats kaip ir anksčiau. Sekite, jei jūsų žvaigždė prieš kažką. Tai jums pasakys vertę. Jei turite ir prieš kažkas, jis jums pasakys adresą. Ir jūs turėtų priskirti arba patarimų ar ši vertė. Taigi eikime per šį paskutinis nekilnojamojo greitai. Ne tai paskutinis, atsiprašau. Tiesą sakant, jus vaikinai galite pasiimti. Kuris jums vaikinai nori eiti daugiau iš likusių trijų kad mes turime? Aš nemanau, kad mes galime tiesiog padaryti, kad nes mes negalime tiesiog peršokti į eilutę. GERAI. Jūs vaikinai neturi pasirinkimo, tai tik trečias paskutinis. Zodiako vnt lygus b kartus c. AUDITORIJA: Zodiako PB? AUDITORIJA: Zodiako PB. ANDI Peng: Atsiprašome? AUDITORIJA: Zodiako PB. ANDI Peng: Zodiako PB. O, mano blogas. Zodiako PB lygus b kartus c. Aš ruošiuosi duoti jums, vaikinai, 10 sekundžių. Tiesiog greitai mąstyti. Tai, kad mes turime tiek kas, kas atsitinka, kai mes vykdyti šią penktąją liniją tiesiai ten? GERAI. Kas yra? Auditorija: 100. ANDI Peng: 100. Kas yra b dabar? Auditorija: 500. ANDI Peng: Geras. Ar kas nors nori paaiškinti man, kodėl tai yra 500? Aš nesijaučiu kaip mes iš tikrųjų kada nors palietė b. Kaip mes sugebėsime pakeisti vertė b neliesdami b? Taip? Auditorija: Kadangi žvaigždė PB reiškia ne pb-- vertę ANDI Peng: Būtent. Auditorija: --which yra b. ANDI Peng: Būtent. Taigi čia mūsų schemoje, mūsų žymeklis PB yra iš tikrųjų nukreipta į šios teisės čia, kuris yra faktinis fizinis b. Ir todėl, jei jūs einate ir jūs žvaigždė PB, tai po savo rodyklę žymeklį ir fiziškai keičiant b vertę. Štai kodėl mes b pasikeitė 500 be faktiškai neliesti b. Ir tada visa kita lieka tas pats, nes mes nelietė, kad. Štai b. Saunus. Ir tada-- Auditorija: Aš tiesiog turiu klausimą. ANDI Peng: Taip? Auditorija: Nuo we've-- ten nebėra Ampersand c, ar tai reiškia, Ampersand A nukreipti į tą patį dabar? ANDI Peng: Yep. So-- Auditorija: Taigi rodyklė rūšies tiesiog juda and-- ANDI Peng: Taigi essentially-- Auditorija: --now mes negalime access-- ANDI Peng: --when mes dereference c on-- I klastotojas. Kas tai buvo? Trečioje eilutėje? Ketvirta. Ketvirtoje eilutėje. Visi mes padarė iš esmės buvo pakeisti šią rodyklę ir jį pabrėžtas vietoj. Auditorija: Taigi, mes negali pasiekti c nebėra. ANDI Peng: Jei turėjo tai tiksli numerį, galite jį pasiekti. Bet ne. Neturime rodyklę nukreipta c nebėra. Manau, jei norite naujo prieigos, jūs būtų sukurti kitą žymeklis, kad vėl atkreipė dėmesį į C arba dereferenced tai ir nurodė atgal. Taigi, ne, kaip ir dabar, trijų patarimų, nė vienas iš jų rodo, kad C. Kiekvienas geras? Atsakymai yra internete. Nesivaržykite, po skirsnio, eiti per paskutiniai du ir bandymo patys. Pačiomis sąvokomis, tik šiek tiek sudėtingiau. Tiesiog atlikite per logika kodėl viskas yra skirtingi dalykai. Ir užuomina, patarimai, tema, kad mes mylime padengti ant viktorinos, nes jie konceptualiai labai sudėtinga. Taigi, aš norėčiau pasiūlyti, kad jums vaikinai visi peržiūri šį grafiką arba velniop panašias sąvokas į tai prieš savo viktorinos kitą savaitę. Auditorija: Atleiskit. ANDI Peng: Taip? Auditorija: [nesigirdi] galutinis one-- [nesigirdi]. ANDI Peng: 50,000? Man reikia sekti jį žemyn. Bet somewhere-- Manau liniją anksčiau, jūs sukūrėte milžinišką c vertę. c lygus šį milžinišką dalyką kuris yra 100 kartų 500. Ne. Auditorija: [nesigirdi]. ANDI Peng: Taip. 100 kartų 100, kuris yra 10.000. Kuris yra 10.000. Taigi atgal ten esate dauginant B ir C temperatūroje. Taigi žymeklis, kad atkreipia dėmesį į b-- kuri yra 500-- kartų vertės a-- Auditorija: [nesigirdi]. ANDI Peng: Gal tai negerai. Auditorija: Ne, ne, tai ne. [Nesigirdi] žymeklis ne C yra dabar nukreipta į a-- ANDI Peng: Taip. Jis teisus. Auditorija: --it tai jos ne lygiųjų times-- tai tas C vertę. ANDI Peng: Ar galite pasakyti, kad šiek tiek tiek garsiau, kad kiekvienas gali girdėti? Auditorija: Taigi žymeklis ne C Dabar atkreipia į ką rodyklė naudojamas atkreipti to-- ir vis dar does-- bet jie rodo, kad tas pats dalykas, kuris yra A, tiesa? Vertė a, tačiau jis buvo naujai apibrėžti. Ir tuo to pradžioje būsite ištardami anksčiau buvo 100 kartų ties b reikšmė, kuri yra 500. Ir taip tai kad ir kiek tai yra. 50.000. Jie jūs perskirstymo, kad to, ką atminties erdvė c is-- į taške C žymiklį yra nukreipta į kuris yra a. Taigi jūs iš naujo nuo A iki bus 50,000. ANDI Peng: ji gali mokyti skyrių už mane. Kitą kartą tai visi tavo. Čia. Štai daugiau saldainių už tai. Jūs esate to verti saldainiai už tai. Auditorija: aš beveik sugauti, kad. ANDI Peng: Jūs beveik sugauti, kad. Viskas gerai. Taip. Bet ji buvo visiškai teisus. Taigi, ką jūs turite padaryti, yra that-- Aš manau, kad mes turi sekti tai, kad patarimų dabar nukreipta į skirtingas vertybes. Taigi value-- Atsiprašome, tačiau rodyklė C repointed į: a. Ir taip, kad pasikeitė visi mūsų numerius. Ir štai kodėl, kai jūs prieiti prie vertė saugomi ten, tai skiriasi. Ar tai prasminga? GERAI. Saunus. Kiekvienas geras, kol aš pereiti? Auditorija: Ar the-- kai jūs ketinate žemyn kairiajame stulpelyje eilučių, nėra pirmoji eilutė įtakos antrą eilutę ir tada second-- patinka, tai all-- ANDI Peng: Taip. Taigi įsivaizduokite, tai kodas, kai aš tiesiog įvedėte A lygu b kartus C, žvaigždė lygus c. Įsivaizduokite, kad aš tiesiog pritrūko šį kodą ir aš ne atsispausdinti, ką visi šie dalykai buvo. Tiesiog Jei aš būčiau spausdinti pirmas dalykas viršuje, būtų čia. Jei po išbėgau visus tie kodo eilučių, kas šios vertės turi būti pabaigoje yra tai, kad. Taigi aš iš tikrųjų parašė programą čia. Aš nepadariau visus daugybos. Bet tik įsivaizduoti. Taigi čia aš tiesiog turiu programa, vadinama patarimų. Aš ruošiuosi priartinti jei guys-- Gerai. Taigi aš sukūriau kintamieji a, b, ir c. Aš juos nustatyti lygi 3, 4, 5, ir ir aš sukurta savo atitinkamus nurodymus. Ir tada čia aš tik ketina atsispausdinti, kas tai yra. Taigi leiskite man paleisti, kad. Ar jus vaikinai see-- šūdas. Ar jūs vaikinai pamatyti, kaip, b ir c yra tokios vertės, bet jų patarimai, tai milžinas šiukšlių vertė, kad mes nerūpi? Taigi, jei aš buvo iš tikrųjų kištukas visose daugybos ir tada atspausdinti visus tai, kad būtų atlikti iš į tai, kas, kad yra apačioje. Taigi, jei jus vaikinai nori pažaisti su iš tikrųjų fiziškai kodavimo, vaikinai galite tiesiog prijunkite visus tuos. Kodas bus internete ir tada jūsų vertės turėtų spausdinti, kad po to. Ir tada pamatysite, kaip rodyklė adresai tikrųjų grąžinta. Taigi jūs pamatysite, kaip adresas C faktiškai tampa prilygti Nepriklausomai nuo adresas buvo. Ir jie atitiktų kokia kad didelis skaičius. Geras klausimas. Kiekvienas viskas gerai? Vienas paskutinis kvietimas teikti klausimus. GERAI. Gerai. Taigi parengti turėti savo protą prapūsti šiek tiek šiek tiek daugiau. Masyvai yra iš tikrųjų tik rodyklės. Tai viskas, jie yra. Ir atminkite, kokie yra įsipareigojimų? Jie taip pat masyvai. Taigi, kas yra įsipareigojimų tikrai? Jie kaip rodyklės į pradeda iš daugiau simbolių char. Taigi tai tik sąvokas, kurie prasideda statyti viena ant kitos. Taigi, kad jums why-- prisiminti paskaitoje David, kai jis turėjo tą palyginimą int styginių mama yra kažkas, o tada kitą eilutę mama ir jūs bandyti prilygti du tarpusavyje, jie suteiks jums skirtingas reikšmes. Tai todėl, kad stygos patys nesate vertės. Visi jie yra atminties adresai char-- jie yra matricos simbolių ir masyvai yra tik rodyklės. Taigi, iš esmės, kai Dovydas buvo comparing-- Ar Gerai, jei aš ištrinti visa tai? Taigi paskaitos, kai Dovydo turėjo mama lygu lygu mama, mums, kad atrodo, kad tas pats dalykas. Teisė? Bet, užrašytas kompiuterio dangtis, kas iš tikrųjų vyksta yra tai, kad ši eilutė, visa, kas yra masyvas. Su ampersand-- arba, atsiprašau, su tuščiu terminatorių pabaigoje. Teisė? Kairinis pasvirasis brūkšnys 0. Neteisinga Backslash. Taigi visi jie were-- visi Šie du įsipareigojimų were-- yra masyvas dydžio keturiomis su Iš mama ir mama raides. Bet kas matricas tikrai yra tik rodykles į konkrečią vietą atmintyje kad jums pasakys, kad pradėti savo masyvo. Taigi, šiuo atveju, visa tai buvo buvo tik keletas šiukšlių vertė, kai atsitiktinai žymeklis. Ir visa tai buvo buvo kai kurių kitų šiukšlių vertę. Leiskite tik pasakyti, 0x200. Ir todėl, kai jūs bandote lygūs juos du vienas su kitu, jie vertina, kad klaidinga, nes addresses-- su rodykles kad jie were-- buvo skirtingi. Kadangi tai kitoks, jei esate bando lyginti faktines sveikieji skaičiai. Pavyzdžiui, jei jūs norėjote compare-- paskutiniame example-- int A į B, jie būtų įvertinti tiesa, kaip sakė Elliotas nes jie buvo sveikieji skaičiai, kurie buvo saugomi ir jūs vertinant tik vertybes. Čia, nes stygos masyvai ir visi matricos yra patarimų, Štai kodėl jie nėra lygus vienas į kitą. Taigi rūšies painu, kad grafinis. Bet tegul tik įsivaizduoti. Mes sukuria dydžio masyvas 3 su indeksu nuo 0 iki 2-- 0, 1, 2 ir 1 vertybių, 2 ir 3 saugomi jų. Visi masyvas tikrai does-- čia, leiskite tiesiog sako, kad aš sukurti rodyklę to masyvo ŠTAI susipažinimo su tuo vertę Pirmasis puslapis šio masyvo. Taigi čia būtų 0. Teisė? Ar visi suprasti, kaip kad vertinama pirmoji eilutė? Didysis. Ir todėl, jei jūs norėjo inicijuoti papildomas vertes po to, visi mes darome yra perskirstymo. Taigi, yra 0, 1, 2, 1. Taigi, šis žymeklis, kad kažkada buvo nukreipta į čia, visi mes darome juda žemyn. Štai ką plius 1 daro. Ir tada mes galime įdėti 2 ten. Jei mes norėjome 3 įdėti į vieną po, mes ištrinti šį žymeklį, įdėti 3 ten. Ar tai prasminga visiems? Taip. Ar turite klausimų? Auditorija: Tai [nesigirdi] turi klausimas, aš pasakyti, kad tai vistiek. Nemanau, kad tai tikrai Klausimas but-- anglų, masyvas lygus 1 prasmę. Mes, kaip, Gerai, pirmas dalykas. Bet viskas yra 0 puslapis [Nesigirdi] masyvas lygus 0 nurodyti pirmąjį derinį. ANDI Peng: Taip. Taigi iš tikrųjų, ką darau čia Aš ne gauti pirmąjį indeksą. Viskas, ką aš buvo doing-- todėl visų pirma, pasakykite man, ką žvaigždės masyvo daryti? Ką prieš rodyklė žvaigždė daryti? Auditorija: Tai rodo rodyklę. Kad jūs skelbiantis žymeklį. Tai de-- ANDI Peng: Tai dereferences o tai reiškia, jis eina ir iš tikrųjų gauna vertę. Teisė? Taigi šiuo atveju, jūs norite gauti vertė čia ir nustatyti, kad iki 1. Taip? Taigi, aš nesu actually-- aš ne tikrai rūpi šis rodiklis, viskas, ką aš darau yra tik Iteracja žemyn perkeldami savo žymiklį žemyn masyvo. Ir tada galiausiai aš turi jį sustabdyti, tiesa? Ir taip, kad aš galiu nutraukti yra, kai aš paspauskite, tuo atveju, Styga, null terminatorius. Žinau, oh, jei aš paspauskite back-- jei matau Backslash 0, aš žinau, aš padaryti su šiais ir aš žinau, kad aš galiu tik sustabdyti Iteracja per. Tikrai geras klausimas. Ir mes tikrai eiti toliau gylis šioje kitą savaitę nes gabalas, kad ketina įtraukti į naudojimo patarimų daug. Bet tiesiog žinau, kad dabar, tai tik kitoks more-- tai tik kitoks būdas kompiuteris rašyti, iš esmės, ką mes darome. Kaip Dovydas tarė paskaitą, taip, kad mes prisijungti masyvas yra tiesiog daro masyvas 0, laikiklis 0, jei mes tiesiog norėjo patekti į pirmąjį vertę. Visi kompiuteris daro sukasi kad į tą ir Iteracja pati. Taigi, mes jį vadiname sintaksinis cukraus, kuris yra tiesiog išgalvotas būdas pasakyti patogi būdų mus Žinant, kaip programą. Bet kompiuteris po, ką ji daro, tai tikrai tik turintys rodyklė kad manimi prisitaiko. Bet taip, kad mes rašome tai, nes tai lengviau mus galvoti apie dalykus, kalbant apie dėžės ir kaip judėti žemyn dėžės, yra turėdami laikiklius. Atsiprašome, tai buvo tikrai, tikrai prastai but-- taip. Auditorija: Taigi, kaip būtų Jei lygintume dvi eilutes matyti, jei jie yra lygus tarpusavyje? ANDI Peng: Dovydas rašė Ši programa paskaitos todėl aš tik ketina eiti per greitai ir trumpai. Kaip jums būtų padaryti, kad yra, kad jūs iš tikrųjų reikia eiti ir palyginkite addresses-- arba vertės gauti iš rodyklės. Taigi nepamirškite, kaip jūs gauti vertę čia? Man nerūpi, apie adresą čia. Kaip aš iš tikrųjų gauti vertė kokia yra čia? Auditorija: [nesigirdi]. ANDI Peng: Būtent. Taigi jūs palyginkite žvaigždę Čia palyginti su žvaigžde čia. Ar tie lygūs. Ir tada jūs einate žemyn. Ar žvaigždė čia ir žvaigždė čia lygūs? GERAI. Jie lygūs. Ir jūs tiesiog laikyti žemyn kol jūs nukentėjo tiek pabaigą. Ir, jei visi iš jų yra lygūs, tada jūs žinote, jūsų eilutė yra lygūs. Ir C iš tikrųjų turi funkcija parašyta vadinamas Styginių PI, kuri iš tikrųjų tik daro tai už jus, kad jums nereikės " turi parašyti patys. Taip? Auditorija: Manau, paskaitos yra, kai mes palyginimo. Mes neturime tikrai reikia skaitiklis kaip pi, tiesa? ANDI Peng: Jūs neturite nes mes do not really care kiek dėžutės mes pakartota per. Visi mes rūpinamės yra tai, kad mes ketiname nesustoti, kol aš žinau sustoti. Ir žinote, sustabdyti, kai ten kai nuoroda Rūšiuoti kad jūs esate ne null terminatorius. Taip. So-- Auditorija: [nesigirdi]. ANDI Peng: Taip. Taigi, siekiant palyginti atveju įsipareigojimų, aš tikrai ne rūpintis, kaip daug laiškų are-- man reikia palyginti jei jie true arba false, jei jie lygūs vienas į kitą. Man nerūpi, kaip daug laiškų yra kiekvienoje iš jų, tiesa? Aš tik rūpintis, kad šis rungtynėse tai ir vieno po varžybų ir vienas po atitinka visą kelią iki tol, kol pabaigoje. Teisė? Ar tai prasminga? Taigi aš nerūpi, kaip daug laiškų, Aš tik rūpintis, kad visi laiškai Rungtynės. Taip. GERAI. Ar galiu perkelti iš to? Didysis. Mes veikia šiek tiek trumpas laikas, kad aš ruošiuosi tik leidžia jums vaikinai trumpai pažvelgti į tai. Paleiskite jį į savo ID, jei Jūs vaikinai yra įdomu. Ir vaikinai galite pamatyti, ką tai bus atspausdinti. GERAI. Taigi kažkas, kad mes taip pat bus paliesti ant tiek yra rodykle aritmetinis idėja. Kuris, visa tai yra, yra o ne koreguojant , kas yra saugoma vertės ne jūsų žymeklis adresą, tai tik iš tikrųjų keičiasi pati adresas. Taigi, jei jūs, kaip žmogus norėjo reguliuoti savo žymiklį rankiniu būdu, taip, kaip norėtumėte tai padaryti yra tiesiog padaryti n kartų iš rodyklės dydį. Teisė? Taigi int. An int-- kiek baitų atmintyje yra int? Tai keturių, tiesa? Taigi, jei aš žinau, aš turiu visų masyvo ints ir aš noriu jį atkreipti dėmesį į vieną Po to, aš žinau, aš tiesiog perkelti savo žymiklį žemyn keturi baitai, tiesa? Ir taip n kartų dydis rodykle baitų Tačiau daugelis baitų jūs tiesiog ketina perkelti žymeklį nustato. Taigi, pavyzdžiui, jei turime iš masyvo ints, pirmasis, tegul tiesiog pasakyti, saugomas kaip 0x00. Jūs žinote, o kitą ketina būti 0x04 nes tai keturių baitų vėliau. Ir viena po to vyksta būti 0x08 ir taip toliau ir taip toliau. Ir taip, vaikinai, pažvelgti. Visi jūs darote čia kad jūs turite rodyklė m ir jūs pridūrė, kad į jūsų atminties, todėl galite judėti žemyn Iš atminties blokai paskirstomi. Geras aukštesnio lygio koncepcija. Vaikinai nereikės žinoti šią savaitę, bet tai visa tai daro ten. GERAI. Kitas anekdotas laikas. Du įsipareigojimų vaikščioti į barą. Vienas sako: Norėčiau romo ir koksas šiukšlių vertės. Kitas sako, jūs turite pasiteisinimas mano draugas, jis nėra lygus nuliui nutraukiama. Jūs vaikinai jį gauti. Atsiprašau. Tai kaip aš nuolat save vyksta, kai aš prep skyriuje yra įdedu porą pokštas skaidres. Anyways. GERAI. Prieš judėti on-- Taigi, iš esmės, mes apėmė visą konceptualus klausimai, susiję su rodyklėmis. Ir tada mes ketiname talk-- juda daugiau, kalbėti apie tai, kodėl tai svarbu ir kaip, kad telpa į idėja atminties valdymas. Bet kol aš judėti į priekį, Ar kas nors turite klausimų apie rodykle naudoti, kas vyksta , kai kuriate patarimų, Kaip bus nuorodos į kiekvieną kita vertus, kaip jie dereferencing? Bet apie Klausimai kad kol aš pereiti? GERAI. Didysis. Taigi, tai duoda mums į tai didesnis aukštesnio lygio koncepcija Atminties valdymo, kaip visuma. Taigi, iš esmės, yra kompiuteris, ten dviejų pagrindinių tipų atmintyje arba regionuose, kuriuose atminties yra saugomi. Jūs turite čia tai, kas vadinama krūvos, ir jūs turite žemyn čia tai, kas vadinama kamino. Ir mes ketiname kalbėti apie kamino pirmas, nes jis daugiau finagley vienas, kad jūs turi rūšies konceptualiai suprasti, kas vyksta. Taigi, visi kamino is-- galvoti ji kaip fiziškai kamino atminties kur jūs turite atminties blokas kad manimi atidėta savo programą o tai veikia. Ir tai, kur iš esmės visas savo vietos kintamieji yra saugomi. Taigi tai yra tik Mastelis paveikslėlyje tos krūvos. Kamino ten, aš tik priartinimo šiek tiek daugiau. Taigi, iš esmės, kamino turite iš funkcijos krūva į savo programą. Taigi tegul tiesiog grįžti į savaitę du Pavyzdžiui kur mes turėjome savo pagrindinę funkciją taip pat kubo funkcijos kur mes bandėme sukurti funkciją, kuri cubed-- kad paėmė parametrus kaip input, Cubed juos ir grąžino juos atgal į pagrindinį. Taigi, kaip kad saugomas atmintyje yra tai, kad jūs turite savo pagrindinę funkciją čia apačioje. Ir tada su kiekvieną papildomą funkciją kad jums skambinti ir pridėti ant viršaus, kad atminties tiesiog kaminai viršuje. Pagalvokite apie tai, kaip fizinio kamino. Ir todėl jūs turite visus jus Pagrindinis kintamieji savo pagrindinių funkcijų, viskas, kas vyksta čia, saugomi. Ir tada, kai jūs vadinamas kubas, jis eina ir jis sukuria kopijas visiems parametrai ir ji saugo juos aukščiau į kitą vietą. Ir tai kodėl mums rūpi? Priežastis mums rūpi tai, kad mes galime ne tik naudoti parametrai here-- kintamuosius here-- ir mes juos pakeisti, mes tikimės jiems taip pat bus pakeista čia, tiesa? Idėja yra tai, kad jie išgelbėti skirtingose ​​vietose atminties taip, kad, kai jūs susipažinimo skiriasi funkcijos, ką jūs manote, kas vyksta Netiksli tikrųjų vyksta, nes atminties bitai nėra tarpusavyje. Ir taip klausimas, kad tikrai mums svarbu rūšies suprasti yra, kas būtų, jei, kai mes paleisti programa, kad funkcijos dydis kamino frame-- tiek fiziškai, kaip kiek atminties mes turime duoti? Gal tai milžiniškas funkcija, todėl mes turi duoti, kad daug atminties. Bet mes jeigu jis buvo mažesnis norite reikia mažą truputį. Taigi, idėja yra ta, kad kai mes paleisti programa tos funkcijos dydis priklauso nuo to, kiek kintamieji ir kintamųjų tipas kad mes norime suteikti. Bet kas, jei skaičius variables-- ir jų dydžiai, kad manimi lemia ne Jūsų daviklis, bet yra nustatomas pagal faktinį vartotojas savo programą. Taigi, jei aš norėjau sukurti funkciją kad pradėjo stygos iš naudotojo, bet aš ne iš tikrųjų žinote, kaip didelis tie stygos, sunku man paskirstyti konkretus atminties kiekis reikalingas. Teisė? Nes jei tai function-- jei Šis vartotojas įveda milžinišką eilutę, jis ketina sukurti klaidą kas vadinama esmės sukrauti perpildymo kur peržengia ribas atminties, kad turite. Ir taip, tada ką mes darome? Jei mes galime ne tik sukurti šį milžiną kamino, kad galima sutaupyti viską, ką mes darome, kad išspręsti šią problemą? Taigi mes ketiname pereiti ir aptarimas apie šį antrojo tipo atminties ir tada mes galime kalbėti apie tai, kaip mes galime naudoti du kartu išspręsti šį klausimą. Taigi dabar mes ketiname pereiti iki į kitą dalį atminties mūsų kompiuteryje. Tai vadinama krūvos. Taigi, visi krūvos yra yra baseinas Prieinamų atminties, kad gali būti skiriamos dinamiškai. Taigi, kad gali pakeisti kol jūsų programa veikia. Ir taip regionas nepanaudotos atminties, kurios gali būti allowed--, kad gali būti skiriama su funkcija vadinamas malloc arba atminties paskirstymas. Taigi, iš esmės, kada, vykdote programą, galite dinamiškai sukurti atmintį nuo krūvos ir naudoti, kad visi žemyn čia. Ir taip, tada, visus savo funkcijas Čia galite patekti į krūvą. Ir taip malloc, ši idėja, kad Dovydas rūšies greitai, trumpai glossed į paskaitą, tai tik už pusę jums kontroliuoti savo atmintį. Kaip, kai jūs tiesiog sukurti kamino funkcijas, kai jūs tiesiog turintys savo pagrindinę funkciją su savo atsitiktinių funkcijų, manote apie juos kaip vaikai, kad tik pabėgo, kai buvo padaryta su jais. Jie buvo tikrai neblogai vaikai. Jūs sukuriate juos, jūs išmokyti juos ką nors, ir tada, kai norite prieiti prie juos vėl jie ne ten, nes jūsų Atminties tiesiog pabėgo. Bet malloc arba krūvos, yra būdas turintys geresnius vaikus, kur galite rūšies sukurti juos, priskirti jiems reikšmes, naudoti them-- kad skambėjo tikrai bad-- juos naudoti, tačiau jūs norėjote, bet tada būtų galima kontroliuoti juos ir tada atlaisvinti atminties kai jums jų reikia. Taigi, kai jūs baigsite su jūsų funkciją, vaikai ateina su Jumis ir jūs vis dar turite tuos duomenis ten. Taigi taip, kad mes malloc arba kurti, atmintis iki funkciją void žvaigždės malloc dydis baitais. Taigi tai tik prototipas kodėl mes tai darome. Taigi pavyzdys yra mums sukurti rodyklę Tipo int-- int STAR pointer-- dydžiu neprilygstami malloc dydis tarpt. Taigi priežastis, kodėl mes darome dydį ir ne tik number-- nes mes visi žinome, kad int yra keturi baitai, right-- bet int yra tik keturi baitų dėl tam tikrų operacinių sistemų. Už mus idėja programuotojai yra, kad mes norite sukurti kodas, kuris gali paleisti visus kompiuterius, o ne tik Mūsų paprastas kompiuteriai. Ir taip, tai kodėl mums patinka naudoti dydis, o ne tik numeris keturi. Ar tai prasminga visiems? Taigi dydis of-- visa tai yra C funkcija arba operatorius, jums pasakys, kiek baitų atminties daro tam tikro tipo kintamojo imtis. Taigi, šiuo atveju, dydis int yra keturi. Keturi baitai. Ir malloc ketina atlaisvinti iki keturių baitų savo krūvos, tuomet galėsite naudoti jūsų pagrindinis funkcija, kad būtų galima laikyti atmintyje. Ar kiekvienas aiškiai, kad iki šiol? Taip? Auditorija: Aš aišku, bet tiesiog būti per clear-- ANDI Peng: Gerai. Visiškai gerai. Auditorija: --size apie tai [nesigirdi] iš tikrųjų galite [nesigirdi] ir tai tikrai bus padaryti dalykas, kad mes norime, kad ji. Tai ne kai Pseudocode. ANDI Peng: Ne Auditorija: Tai kaip nekilnojamojo thing-- ANDI Peng: Tai realus kodą. Auditorija: --we gali jį naudoti. Tai tikrasis. Saunus. ANDI Peng: Dydis ateina su C. Auditorija: Tai daro mano gyvenimas laimingesnis. ANDI Peng: Taip. Taigi, jei esate tingus programuotojas kaip I rūšies esu kartais, Man nepatinka įsiminimo kokio dydžio int yra, man nepatinka įsiminimo su trintuve dydžio. Dydis tik jums pasakys, ką tai yra ir tai daug lengviau. Gerai. Taigi svarbus dalykas kad vaikinai visi nori nepamiršti, kai esate naudojant malloc yra, kad jūs visada turi patikrinti, pamatyti, jei ji null. Taigi, kaip sakiau, grįžti į kad krūvos nuotrauka. Krūvos yra tik tai milžinas kamino atminties, kad jūs turite. Ir jūs norite, kad būtų galima imtis gabaliukus atminties iš jos ir ją naudoti, tiesa? Bet kas, jei turite ne daugiau atminties toje krūvą? Ką daryti, jei aš jau naudojamas visiems tai ir stengiuosi malloc daugiau? Tai neegzistuoja. Na, tai kodėl jūs ketinate gauti klaidos. Jūs ketinate SEG gedimą. Jūs ketinate kur jūs turite segmentavimo kaltės bandyti prieiti prie dalykų, kurie nėra. Ir taip, kaip mes darome kad ir taip, kad mes išvengti, kad yra tai, kad mes tikriname pamatyti, jei rodykle anketa null. Taigi, jei aš būčiau malloc kažką ir man teko ne daugiau atminties, kad būtų išspausdinti, nes klaidą rodyklė grįžo į Jums yra tiesiog niekinis. Ir taip, kaip mes darome this-- tai tiesiog puikus dizainas, tiesiog įsiminti this-- yra, kad bet kokia laikas bandote malloc nieko, jūs ketinate reikia patikrinti, pamatyti, jei ji null. Nes kai bandote gauti atmintį iš krūvos, Jūs visada turite padaryti Įsitikinkite, kad turite atminties. Tai viskas yra. Taigi gana daug tų trijų eilučių kodo, įsiminti. Kiekvieną kartą, kai malloc, pūkštelėti juos. Jūs ketinate reikia. Nes aš jums garantuoti, mes ketiname išbandyti jums kiekvienu konkrečiu atveju ir kompiuterio ketina sprogti, nes jūs ketiname bandyti kreipties atminties ŠTAI ne ten ir viskas vyksta avarijos ir jis nesiruošia būti gera. Taigi tiesiog gręžti, kad į jūsų smegenis. Malloc, null. Geras. Gerai. Tuomet šis gimdo klausimas, kas atsitinka, kai mes baigsime naudojant šią atmintį. Kadangi visos idėjos turintys malloc buvo kad mes turime šitą akmenų krūvą, kad mes galime imtis Atmintis ir tada mes galime jį naudoti. Teisė? Ir tada, ką mes turime prisiminti yra tai, kad, kai mes baigsite su juo, mes tada gali laisvai ją. Paleisk. Mes galime let it go. Arba jūs taip pat ketina ištekėti atminties ir daugiau blogų dalykų įvyks. Iš esmės, kai jūs neliesti atmintį, blogi dalykai atsitiks, jei jums nereikia daryti dalykus teisingai. Taigi, jūs turite patikrinti, pirma, jei turite atmintį. Ir tada, kai jūs baigsite, jūs norite nemokamai jį ir leiskite savo operacinę sistemą priimti jį atgal. Taigi, kaip mes darome tai tik, kad funkcija, negaliojančiu nemokama, o rodyklė su ta atminties krūvos. Taigi pavyzdys yra nemokama žymeklis. Tai gana lengva, paprasta, nenoriu pamiršti. Taigi patikrinkite, ar jis niekinis, nemokamai. Kiekvienas geras? Taigi, dar kartą, kad jūs vaikinai kodas gali rūšies greitai pažvelgti žvilgsnio. Aš žinau, kad tai naujos sintaksės daug ir tai viskas gerai, jei esate kaip ir ah, ką tai reiškia naujo? Nesijaudink. Visa tai turėjo būti rodoma veiksmų, kaip visi šie dalykai gali būti naudojami kartu. Taip, kad būtų sujungti kaip praeities krūva skaidres, mes tiesiog nuėjo per į vieną programą. Auditorija: Tam tikra prasme kad mes galime actually-- ANDI Peng: tokiu būdu, kad mes iš tikrųjų galite naudoti. Jūs galite pūkštelėti, kad į jūsų ID, galite paleisti jį, ir jis galėtų dirbti. Auditorija: Gerai. Štai tikra? ANDI Peng: Tai reali. Taip. Aš stengiuosi padaryti taip, kad šriftai yra skirtingi, kad kad kai aš tipo nekilnojamojo kodas šrifto šrifto kodas ir kad mano pastaba kodas yra skirtingi, bet Aš nežinau, jei tai iš tiesų veikia. AUDITORIJA: Ne Aš manau, kad-- ANDI Peng: Gerai. Auditorija: --sometimes [Nesigirdi] ir aš patinka, kad būtų tikrai mielas jei ji iš tikrųjų buvo naudingas dalykas bet tada tai ne naudoti dalykas. Man patinka, kad tai yra naudingas dalykas. ANDI Peng: Gerai. Taip. Aš praeiti, kad kartu. Būkite kaip Dovydas, vaikai yra tikrai liūdna, kai rašote apie netikrą kodą. Gerai. Taip? Auditorija: Taigi čia PTR nėra faktiškai rodyklė, tai atminties blokas? ANDI Peng: Taigi tu kalbi pirmoji eilutė arba vienas žemyn čia? Ar tu kalbi apie šį vieną čia? Auditorija: PTR yra skirtingi dalykai in-- ANDI Peng: Na, taip, čia ką aš doing-- tikrųjų, tegul tiesiog eiti per čia. Šis ryšius natūra gražiai visus sąvokas. Taigi čia mes turime int žvaigždė PTR. Taigi int žymeklį, kad ten mes iš tikrųjų sukurti rodyklė, atkreipia dėmesį į sveikojo skaičiaus. Na, jis ketina atkreipti dėmesį į visumą. Ir mes ketiname malloc arba duoti, pakankamai atminties skirta saugoti sveikasis skaičius. Taigi keturi baitai šioje byloje. Ir tada, jei tai lygu null-- dydžiu neprilygstami lygus null-- mes ketiname spausdinti. Oi, jūs turite, nes klaidą jūs iš atminties, tiesa? Priešingu atveju grąžinant viena, kad tik pasakoja savo programą kad jūs turite klaida. Ir tada, jei jūs darote turi tą atmintį, tai ketina laikyti ką gauti INT suteikia jums į vietą ir nustatyti, kad jis, kaip rodyklės vertę. Taigi, tai iš tikrųjų ketiname fiziškai ištrinti šią vertę ir įdėti ką gauti int grąžą. Ir tada jūs ketinate Spausdinti kokia jie atvyko. Auditorija: Ir tai bus į krūvą? ANDI Peng: Tai vyksta būti į krūvą. Auditorija: Ir taip, kad bus prieinami. ANDI Peng: Būtent. Gražus. Geras. Auditorija: Taigi, kai mes nemokamai PTR bent ši Paskutinis žingsnis, mes atlaisvinus žymiklį ar mes atlaisvinus blokas? ANDI Peng: Taip. Taigi mes atlaisvinus pointer-- Na, išlaisvinant atminties bloką. Taigi vienintelis būdas, kuriuo mes netgi galite susipažinti atmintis, turintys žymeklį. Jei jūs neturite žymeklį, jūs kaip, oi, aš nežinau, kur ji yra, tiesa? Taigi, jei jums nemokamai ją, jūs iš esmės išlaisvinant kad visą bloką. Tada jūsų kompiuteris žino, OH, ten nieko naudoti čia Galiu tiesiog įdėti šiukšlių vertės atgal į jį dar kartą. Auditorija: Taigi sveikieji skaičiai egzistuoja apie tai? ANDI Peng: Ar sveikieji skaičiai egzistuoja? Atsiprašau. Ar galite perfrazuoti klausimą? Auditorija: Aš norėjau, po to, kai išlaisvinti žymeklis, sveikasis skaičius, kad jūs gaunate, bus, kad vis dar egzistuoja? ANDI Peng: Ne, tai ne. Arba bent jau tai bus yra jūsų atminties prieš jūsų kompiuteryje nėra kokia su juo, bet ten ne būdas jums gauti, kad. Kadangi jūs išlaisvino žymeklį. Jūs nežinote, kur ji yra daugiau. Taip. Aš ruošiuosi perkelti čia. Na ir na. Taigi mes per daug konceptualus sunkumai atminties valdymas ir mes tik ketina iš esmės praleisti 5, 10 minučių vyksta per sintaksės dalykų, bus galima naudoti ir naudinga jums vaikinai, bet nieko per daug konceptualiai ten. GERAI. Taigi mes visiškai keisdamas pavaras čia. Atminties valdymas, sunku. Pointeriai, sunku. Taip. Tai tikrai, tikrai sunku. Visiškai gerai. Štai kodėl jūsų kūrinys yra bus tikrai sunku. Bet jei jūs einate ir daryti ką, kad mes turėtų daryti, kad Žinoma viskas yra niekinis, įsitikinkite, kad patikrinti ar viskas yra niekinis, įsitikinkite, kad laisvos atminties, įsitikinkite, kad viskas yra ne nesandarus, jums bus gerai. Jums bus nustatyta. Gerai. Taigi mes ketiname pereiti į tai visiškai nauja koncepcija nukreipta. Ir taip iki šiol Pagrindinis būdas, kad mes buvo bendrauja su mūsų programos yra per standartinę įvestį ir standartinė produkcija. Teisė? Mes, kaip naudotojo įvestį daiktai ir kompiuteris išspjauna jį atgal į mus terminalą. Tačiau yra ir kitų būdų mums bendrauti su kompiuteriu mūsų programas, kurios yra ne tik mane fiziškai spausdinimo dalykai tada, kai aš pasirodys. Ir kaip mes tai padaryti yra per daugiau nei morkų ir vamzdžio simbolis. Taigi mes taip pat galime skaityti ir rašyti failų naudojant, kad. Taigi taip, kad mes tai darome yra didesnis nei morkos, visi, kad tai daro rašo Nepriklausomai nuo jūsų failas turi atskirą failą. Taigi, pavyzdžiui, jei aš norėjo paleisti Sveiki pasaulį ir aš norėjau išėjimo į būti išsaugotas kitą failą ir ne tik išspausdinti man, gali tiesiog padaryti daugiau nei morkų, Output.txt. Taigi visi tai daro, yra, atsižvelgiant mano hello.world programa, ir kokia produkcija yra, tai taupymo į failą pavadinimu Output.txt. Taigi būdas, kad Dovydas darė .csv su pavadinimais studentų, tai tas pats, kad jus vaikinai gali padaryti. Ir kas ypač Naudinga čia yra didesnis than-- dviejų didesnis nei morkų žymenys, galite pridėti į produkcijos failą, o tai reiškia, kad jūs galite tiesiog pridėti ant viršaus. Jūs galite tiesiog laikyti pridedant prie Output.txt kiekvieno papildomo dalykas kad jūs darote. Arba, jei jūs pradėsite gauti į daugiau sudėtingas programas, du didesnis kaip morkos, kad tik spausdina iš klaidų pranešimus. Taigi sako, jūs turite milžinas suma pranešimų apie klaidas ir jūs norite skaityti per juos visus ir jums nenoriu turėti slinkti per savo terminalą, jūs iš tikrųjų galite tiesiog padaryti didesnis nei Output.txt ir jis ketina išsaugoti visus savo klaidas faile vadinamas Output.txt kad galite pereiti ir skaityti. Auditorija: Kur yra tekstinis failas išgelbėtas? ANDI Peng: jis išsaugotas tas pats katalogas kad jūsų programa yra. Taigi jūs tiesiog eiti atgal ir pažvelgti į jį. Ir tas pats dalykas, kurį mes gali padaryti už indėlį yra kad mes iš tikrųjų gali užtrukti kurios nors failo turinys Ir mes galime įvesti kad į mūsų programą. Taigi užuot padaryti komandą eilutės argumentai, kur jūs fiziškai turite įvesti dalykus kiekvieną kartą, jūs iš tikrųjų gali tiesiog failą pavadinimu input.txt kad tiesiog kelia visa tai. Ir tada vamzdis specialiai kietas, nes jis gali būti ir vienos programos išvestį ir naudoti jį kaip įėjimo kitos programos. Taigi, pavyzdžiui, jūsų vaikinų Vigenere, yra šis kodas linija, kuri jums vaikinai veikia, kad jūs gal gal nelabai žinau, ką jis buvo doing-- tai ./generate 1000 vamzdis ./42. Teisė? Taigi visi tai daro, jei mes tiesiog pažvelgti po žingsnio šio žingsnio, ./generate, tai reiškia, kad aš veikia mano programa generuoti. Tai atsižvelgiant į 1000 savo indėlį. Taigi noriu sukurti 1000 atsitiktinis numeriai ir aš ruošiuosi vamzdžio that-- ar aš ruošiuosi naudoti that-- produkcija kaip žaliavos mano programa, vadinama rasti. Ir aš ruošiuosi pabandyti rasti 42 iš numeriai generuojami iš tų 1000 numeriai. Ar tai kodo eilutę daro jausmas ir visi kiti? Taigi tokiu būdu mes taupymo patys žingsnių toną. Neturime paleisti generuoti, išskyrus failą ir tada padėkite jį į radinį. Mes galime tik daryti viską vienoje eilutėje. Taigi, ką gaminti energiją išvedė, pūkštelėti ją atgal į rasti. Taip? Auditorija: O kalbant apie komandą eilutės argumentai yra that-- tai trys komandinės eilutės argumentai? Tai generuoja, find-- Ne, four-- generuoti, 1000, surasti ir 42? Arba the-- ANDI Peng: Taigi vamzdis daro tikrai ne skaičiuoti kaip komandinės eilutės argumentas nes kompiliatorius arba iš terminalas žino, kad vamzdis, O aš žinau, kad turiu atrodyti prieš nes vamzdis yra mano išėjimas ir aš turiu rūpintis vamzdis, nes tai mano indėlis. Taigi jis žino that-- ./generate ir 1000, Tai yra du įsakė argumentai iš karto pirmąją programą. Ir tada ./find 42 yra du komandinės eilutės argumentai dėl antrosios programos. Taip. Kiekvienas geras apie tai? Taigi tik nekilnojamojo greitai, ką Šios trys linijos kodo daryti? Gana paprasta. Kiekvienas nori man pasakyti kas pirmoji eilutė daro? Auditorija: [nesigirdi]. ANDI Peng: Pagalvokite apie tai, kaip just-- Ką tuo didesnė nei morkų daryti? Auditorija: Joje kažką į kitą eilutę. ANDI Peng: Taigi, kas yra iš, kad priešinga? Auditorija: Joje kitą dalykas į pirmą dalykas. ANDI Peng: Taip. Taigi visi tai daro, yra tu paleista programa .hello-- vykdote programą, pavadintą labas. Jūs ketinate duoti įvesties vadinamas input.txt. Teisė? Nes manau, kad apie tai, kaip tik fiziškai eiti į labas. Ir tada jūs ketinate išsaugoti išvesties faile vadinamas Output.txt. Kaip apie antroje eilutėje? Nori pasakyti, kas antroji eilutė daro? Auditorija: [nesigirdi]. ANDI Peng: Atsiprašau. Pakartok. Elliotas. Auditorija: Taigi tai kelia Sąrašas numerius į radinį. ANDI Peng: Taip. Taigi ieškoti, atminkite, kad Norint paleisti jus rasti reikia žinoti, kur jūs ieškote. Ir taip visi, kad jis tai daro čia yra tai, kad ji suteikia jums iš anksto priskiriamos rinkinys numeriai, tada rasti vyksta ieškoti tie, už 42 numeriu. Ir tada 15. Atminkite, kad vaikinai bėgo tai kai jūs išbandyti savo kodą. Dabar jūs suprantate, ką jis daro? Auditorija: Tai išleidimą iš instrukcijų rinkinys į [nesigirdi] per tris trijų gauti the-- laimėti žaidimą. ANDI Peng: Taip. Auditorija: Jis įveda tų instrukcijos į programą. ANDI Peng: gana daug. Taigi tildės CS50. / Pset3 / 3x3, visi, kad darė buvo, kad mes sukūrėme tekstą failas, kuris turėjo visus pavadinimai pasiruošę jums vaikinai. Ir dėl to jūsų žaidimas žaisti, jums just-- mes tiesiog įdėti, kad į savo programą. Taigi, mes sukūrė šį Valdyba ir tada mes kad lenta išleidimą į savo programą kad bėgo ir sukūrė trijų plytelių iš trijų. Tai viskas, kad ji daro. Ir taip yra iš tikrųjų buvo magija vyksta užkulisiuose kad vaikinai nebuvo programa, kad mes užprogramuotas. Bet dabar jūs suprantate, kodėl vaikinai mes padarėme, kad taip viskas gerai. Gerai. Taigi, nors perorientavimas yra labai Naudinga C turi bendrą mechanizmą skaityti ir rašyti failai savo. Nieko konceptualiai sunku čia, kad aš tik ketina pereiti tikrai, tikrai greitai. Visa tai yra yra kai atmintimi ir todėl, kad jūs vaikinai yra sintaksiškai naudojant jį teisingai. Taip, kad mes norime tai padaryti yra sukurti nuorodą į failą, mes norime atidaryti failą, ir tada mes būtų padaryti visą skaitymo ir rašymo ir uždarykite rinkmeną. Kai dalykas, ką jums vaikinai nori turėti omenyje tai, kad tai darydamas, nes mes uždarymo ir atidarymo failus, visų šių komandų yra įtraukti į standard-- standartinis I / O biblioteka. Todėl įsitikinkite, kad kai jūs daro tai, kad jūs included-- # included-- standarto I / O dot h. Taigi nekilnojamojo greitai. Pirmas žingsnis, kurį norite sukurti nuoroda į šį failą. Ir dabar, kad mes padarėme patarimų, jums vaikinai gali man pasakyti, ką tai kodo eilutę daro. Teisė? Visa tai jis daro kuria rodyklė pavadintas failą tipo failą. Nes jūs žinote, kad tai vyksta atkreipti į failą ir jūs ketina atidaryti failą. Tada esate f open-- visi ji yra atidaryti failą. Tai yra failo pavadinimas. Ir ten tris dalykus, kuriuos galite padaryti. Galite skaityti, rašyti ar pridėti. Dauguma Apskritai, jūs vaikinai bus skaityti arba rašyti nes jūs arba bus įvedusi failą arba išvedė vieną. Taigi, gana daug r ir w yra du dalykų jūs ketinate naudoti labiausiai. Taigi šiuo atveju, viskas, ką aš padariau tai sukurti žymeklį į failo pavadinimu failą. Aš jį atidarant ir aš reading-- aš atidaryti šį failą, pavadintą file.txt ir aš jį skaityti. Tai viskas, ką aš darau šiuo metu. Ir tada tai tik veikia pagal kurią galite skaityti skirtingus dalykus arba rašyti skirtingus dalykus arba pereiti prie skirtingų vietų kur norite ieškoti. Visa tai yra internete. Visa tai jūs galite tik "Google". Nereikia įsiminti juos. Jie tiesiog yra, Vienkartiniai savo naudojimui jei norėtumėte būtų galima juos naudoti. Taigi, jei aš norėjau tik skaityti į vieną simbolį vienu metu, Norėčiau padaryti failo fgetc. Arba, jei aš norėjau skaityti iš linijos tekstas vienu metu, aš norėčiau tai padaryti fgets. Ir taip toliau ir taip toliau. Visa tai tik tai skiriasi ką jūs vaikinai gali naudoti. Ir tada galiausiai, po aš done skaityti ar rašyti, Aš tik ketina fclose tą failą. Ir prisiminti, tai yra vienas iš tų, atminkite, prašome tai padaryti, arba kitur failą nesiruošia dirbti. Visada atidaryti failą prieš skaityti arba skaito, jūs turite visada uždaryti jį, jei ją atidaryti. Tas pats su atmintim, tiesa? Jūs turite visada atminties ir be to. Čia jūs turite visada atidaryti byla prieš bandant jį perskaityti ir jūs visada turite uždaryti po to, kai jį atidaryti. Taigi tai taip pat internete. Aš ruošiuosi iššūkis jums vaikinai rūšies Parašykite programą, kuri spausdina hello.world į failą. Tai tikrai paprasta. Iš esmės tik apima keletas eilučių kodo kad buvo tiesiog parašyta anksčiau. Jūs ketinate juos kartu ir parašyti, kad. Taigi keletas svarbių dalykų, kuriuos reikia turėti omenyje, o jus vaikinai bando naudoti tai. Jei visa tai labai naudinga Jūsų pset šią savaitę, yra tai, kad fopen sukuria failo rodyklės. Tai nėra iš tikrųjų fizinė failo. Visa tai yra nukreipta į failą, kurį norite atidaryti. Ir jūs iš esmės, kai jūs naudojate bet kurį iš kitų funkcijų kaip fread ar fwrite arba fgetc arba fgets, yra kad jūs tik artimųjų išspręsti šią rodyklę į visų šių funkcijų. Taigi jūs ne iš tikrųjų, atsižvelgiant, kad failą ir jį naudoti savo funkcijas, jūs tik atsižvelgiant žymeklį ir išleisti jį su šiomis funkcijomis taip, kad jūs galite naudoti. Ir jei pamiršti uždaryti Jūsų failas po jūs jį naudoti, jūsų programa ketina ištekėti atmintį. Iš esmės, visa tai reiškia yra tai, kad blogi dalykai nutiks ir jūsų programa bus neveikti tinkamai. Ir taip ant pset į pradžia, manau, ten trumpas kur jis explained-- Nate explained-- ką Valgrind buvo. Visi Valgrind yra yra būdas jums įsitikinkite, kad jūs ne nesandarus atmintį. Taigi jūs vaikinai nori padaryti tikrai žiūrėti, kad trumpas nes tai paaiškina tikrai gerai, kas vyksta. GERAI. Taigi aš per tai tikrai, tikrai greitai, nes aš tikrai norite gauti kalbame apie pset prieš vaikinai palikti. Ar kas nors turite klausimų konceptualiai? Dažniausiai visa tai yra tik sintaksė, kad galite naudoti skaityti ar rašyti failus. Galiausiai, visiems mėgstamiausia. Mes ketiname kalbėti apie pset dabar. Taigi, rankos pakėlimu, kiek vaikinai skaityti spec šią savaitę? Oi, tai pusė. Tai gerai. Taigi iš tikrųjų tai yra tikrai, tikrai įdomus pset ta prasme, kad jūs jaustis kaip Detektyvas, nes jūs daro visus šiuos tikrai cool dalykų kad jūs nežinojo, kad galėtumėte padaryti bet dabar tai tikrai cool kad jūs galite padaryti juos. Ir tai tikrai daug paprastesnis nei jūs manote. Taigi pagrindiniai puselės Ši programa yra jums ketinate perkelti kodą arba paskirstymo kodas parašytas mus. Ir jūs ketinate turėti vieną aplanką vadinamas BMP ir kitą aplanką vadinamas JPG. Per savo BMP, jūs teks tris programas. Vienas iš jų yra jau parašyta jums. Taigi copy.c yra programa, mes jau parašyta Jums, kad jūs ketinate atsisiųsti. Visa tai daro, tai priimti kaip pirkimo nuotrauka ir daro jo kopiją, kaip produkcijos. Štai visa tai failas daro. Bet tai, ką norite daryti whodunit-- taip, kaip daugelis iš jūsų vaikinai prisiminti penktą klasę ar maybe-- jūs younger-- gal trečioje klasėje, kai vaikinai turėjo slaptus pranešimus ir jums turėjo įdėti popieriaus lapą per jį iššifruoti pranešimą? Taip? Taigi, kad viskas, ką mes darome išskyrus šio laiko kompiuterio. Taigi mes davė jums šį mielą vaizdą. Ar ne atrodyti nieko, bet po tai yra raktas, kad ketina padėti jums su atsakant į klausimą, prašome tave. Iš esmės tai, ko norite reikia padaryti, tai įėjimo, kad byla, įgnybti kai kurių dalykų aplink, gal sureguliuoti spalvas, pereiti dalykų, todėl, kad nepriklausomai nuo pranešimas yra gali ateiti per. Taigi Viduje yra paslėpta pikselių ir informacija kad jei rašote kodą teisingai ketina iššifruoti ir pasakys ką tai raktas yra. Ir todėl kai kurie naudingų patarimų, kaip norite eiti apie tai artėja. Jūs tikrai norite susipažinti Būk su failų įvesties / išvesties nes mes skaityti iš failus ir rašyti į failus. Teisė? Ir taip kiekvieną kartą, kai mes darome kad, kuris apima failą I / O. Jūs ketinate turi susipažinti su, kaip jums atverti nuotraukos failus? Kaip jūs rašyti failus, paveikslėlius? Kaip jūs darote visus tuos dalykus? Tai ketina būti tikrai naudinga. Antra, kaip tu bus galima keisti spalvos, kad išvalyti šią nuotrauką? Tai tikriausiai bus įtraukti koreguojant savo taškų ar jūsų RGB reikšmes kažkur ten, iš esmės. Nėra teisinga būdas sprendžiant šią taip ilgai, kaip tau can-- kaip ilgai, kaip jūs galite rūšies pakoreguoti tas taškų padaryti jį atrodyti kažką, kad jūs rūpi. Tai viskas, mums rūpi, kaip gerai. Taigi ten daug būdų tai padaryti. Tiesiog pažaisti su juo, kol jūs gaunate kažką, kad dirba. Ir jums bus tikrai nustebsite, kaip keletą eilučių kodo jums reikia iš tiesų tai padaryti. Aš kalbu kaip trys kodo eilutes iš viso kad jums reikia parašyti tam, kad tai padaryti. Taigi, jei jums rasti sau raštu 40, 30 eilučių kodo, jūs tikriausiai daro tai negerai. Viskas, ką jums reikia padaryti, yra natūra pažaisti su spalvomis ir pamatyti, kaip tai veikia iš. Taigi mes galva į šiek tiek kad sunkiau problema. Čia mes turime keisti kur mes prašome jus to-- mes teikiame jums kaip įėjimo nuotrauka ir jūsų dydžio keitimas Šis paveikslėlis į kažką didesnis ar kažkas mažesnis priklausomai nuo matmenų Mes suteikiame jums. Taigi prisiminti, paskaitos Dovydas greitai pažiūrėjau per kaip informacija aptinka savo kompiuterius reiškia tai failo tipas. Taigi Word failas turi ypatingą simbolių priešais, kad pasakykite savo kompiuterį tai Word failą. Tas pats su JPEG. Šiuo atveju mes ketiname duoti jums JPEG failas. Visi mes žinome, kad JPEG failas yra nuotrauka, tiesa? Bet kompiuteris atskiriamos tai labai specifiniais būdais. Būdamas pradžioje bet JPEG failą, jūs teks kas vadinama Bitmap informacijos antraštė ir bitmap failo pavadinime. Visi tie, kurie yra skirtingų vienetų duomenų kad pasakyti savo kompiuterį, ei, klausytis iki, a JPEG artėja ir tai yra matmenys, arba charakteristikos tos JPEG. Taigi vaikinai tikrai norite žinoti kokia informacija yra saugoma viduje tų antraščių ir kas yra iš jų dydžio. Nes kai dirbate per savo programą, jūs ketinate norite praleisti šią sumą. Teisė? Kadangi jums nereikia rūpintis apie pakeitimus galva, jums rūpi pakeisti tai, kas po. Teisė? Todėl įsitikinkite, kad žinote, kaip didelis tie dalykai yra. Antra, prieš pradėdami bando keisti savo įvaizdį, jūs tikriausiai norės išsaugoti originalo matmenis. Teisė? Nes jei sakau jums: ši nuotrauka 100 taškų 100 taškų, ir aš noriu jums padaryti IT keturis kartus didesnis, jūs žinote, kad jūs turite padauginkite tuos matmenis iš keturių. Taigi jūs norite išvesties failą 400 400 pikselių, pavyzdžiui. Taigi tai tikrai naudinga jums vaikinai išsaugoti originalo matmenis. Ir tada po to, kai baigsite dydį, Jūs galite rašyti naujus antraštes su Šie nauji matmenys po dydį. Ir taip, kad fiziškai gali sukurti didelių pikselių yra tai, kad jūs galite parašyti Naujas RGB-- atminkite, RGB, visa tai reiškia yra raudona, žalia, ir blue-- taškų į mmmm-failą. Ir jūs ketinate norite turi skirtingas sumas, kas mes vadiname padding. Visi užpildas yra tarpai prieš ir po nuotraukų kad pasakyti your-- esmės, kad pasakykite savo nuotrauką, kaip didelis jis turėtų būti pradėjimo. Tai labai abstraktus nes daugeliui Jums, jei turite ne skaityti pset spec, bet tai bus labai naudinga, kai jūs iš tikrųjų skaityti per ją. Jūs esate kaip, oi, taip, kad turi prasmę. Kodėl turiu tai padaryti? Logiška. Galiausiai, tai yra tikriausiai vienas iš labiausiai varginantis programos kada tik todėl, kad jūs galite ne pasakyti, jei jis veikia, ar ne. Visa tai programa, susigrąžinti, yra darote, yra, kad, jei tinkamai paleisti, ji turėtų turėti staiga susigrąžinti 50 vaizdus, buvo prarasta mūsų kietajame diske. Ir taip su šia programa problema yra ta, kad jūs tikrai negali išbandyti jį nes arba jūs atsigavo jiems ar jums nedarė. Ir todėl jūs rūšies tiesiog turi žaisti aplink su juo, ir jei jūsų programa yra veikia tinkamai, jums staiga pamatyti, kad Jūsų katalogas jūs gavo milžinišką sumą Nuotraukos, kuriose dabar yra. Taigi, kaip aš norėčiau kreiptis Ši problema yra, mes ketina suteikti jums kas vadinamas card.raw failą. Iš esmės, tai tik sugadintas failas su visos nuotraukos saugomi, kad jūs ketinate reikia atstatyti. Taigi jūs tikriausiai norės įvesties savo card.raw ar atvira, Jūsų card.raw failą ir jūs ketinate nori manipuliuoti ji, kad būtų galima laikyti JPEG. Taigi norėčiau pradėti stebėti ir saugoti kiekvienas individas JPEG, kaip jūs jį rasti. Jūs esate nesiruošia atskirai visi staiga tiesiog sukurti visus 50 JPEG. Jūs ketinate norite išsaugoti kelio nuo to, kiek jūs atidarymo. Ir tada jūs norite įsitikinkite, kai esate Rašant į buffer-- vaikinai žinos, ką aš kalbu apie kai jūs skaitote spec-- norite įsitikinkite, kad jūs naudojate nepasirašytas char buferio. Ir tada jūs norite paklausti sau klausimas, kiek baitų yra A CF-- yra kortelės failą? Štai kiek jūs ketinate norite skaityti į savo buferio. Jūs ketinate norite įsitikinti, du align nes tada jūs neturės atsitiktinių atminties ištekėti. Jūs žinote, kiek tiksliai baitų jums reikia ir kiek baitų, kad norite juos turėti. Ir tada, pagaliau, norite naudoti funkciją, vadinamą sprint-- ai Spausdinti f-- generuoti užsakymą failą pavadinimai kiekvieną naują JPEG kad jums rasti. Taigi, kaip jums sukurti ir rasti JPEG savo kortelę, jūs ketinate norite saugoti juos ir juos įvardyti. Teisė? Ir taip, jūs ketinate norite naudoti šią funkciją sukurti pavadinimus, gali saugoti visus savo JPEG. Ir galiausiai, nepamirškite uždaryti kiekvienas JPEG po baigsite. Nes tai, kas esate ketina padaryti, tai jūs ketina tikriausiai kai kilpa rūšiuoti, kad kartojasi per visus jūsų JPEG. Jūs ketinate parašyti JPEG ir pervadinti jį kaip jūs ją rasti. Bet po to, kai baigsite su kiekvienu JPEG, jums reikia jį uždaryti, todėl jūs galite pradėti daugiau ir pereiti į kitą nuotrauką. Ir taip kažkas, kad yra tikrai smagu, kad mums patinka daryti, nes tai yra toks keistai problema nustatyti bet keistai patenkinti problema komplektas, yra tai, kad visos nuotraukos, mes už jus, jei tinkamai atsigauti, visos nuotraukos yra nuotraukos Tavo nuostabią dėstytojai, tiek Harvardo, bent here-- ir čia Jeilio. Ir jei atsitiktų susigrąžinti visas šias nuotraukas ir nustatyti darbuotojų narių šių kortų, ir imtis selfies su mumis, jei Jūs mus radote aplink kampusie, už kiekvieną nuotrauką, kurią pateikia mums, mes duoti jums Dropbox erdvėje GIGABYTE. Taigi darykime matematikos čia. Jei yra 50 nuotraukas ir 50 mokymo darbuotojų, jei atsitiktų rasti visus 50 mums, tai 50 GB Dropbox, Iš esmės, mes bus suteikti jums vaikinai. Todėl kai papildomą pridėtinę paskatos jei jus vaikinai buvo ne tik rūpi atgauti prarastas nuotraukas. Taip pat šiek tiek pridėtinės paskatos. Tai įdomus problema rinkinys. Jis tikrai yra. Tai tipo nelinksma, bet tada ją tampa tikrai smagu, kai jūs suprasite, Oho, jis veikia ir dabar aš turi visas šias nuotraukas kad aš ką tik sukūrėte pats. Bet dėl ​​pset klausimų? Tiems, kas jau prasidėjo, jei turite klausimų, Aš būsiu čia už poros minučių po skyriuje, jei norite pasikalbėti su manimi. Gerai, vaikinai. Aš atsiprašau, aš informacija dempingo kaina jus vaikinai. Pointeriai yra tikrai, tikrai sudėtingas ir varginantis. Ir aš tikrai džiaugiuosi, kad vaikinai liko su manimi. Mes kalbėsime išsamiau apie kitą savaitę kaip mes pradėti daryti maišos lenteles ir daugiau funkcijų, kad įtraukti juos. Taip. Taigi, jei kas nors turi bet klausimai, aš būsiu aplink. Ačiū, kad atvykote ir imtis daugiau saldainiai, nes ten daugiau saldainių. Saunus.