ANDI PENG: Okei. Tere tulemast nädalal neli punkti. See on ilus päev siin New Haven nii et ma tõesti arvan, et hõre hajumist lapsed, et liitus minuga osa täna, aitäh. Nii kiiresti, lihtsalt enne kui me alustada, tänase päevakorra. Me ei lähe üle paari lühikese teateid. Meil on tõesti hull ajakava tulemas järgmise kahe nädala jooksul või nii, et me läheme üle, et. Teiseks, ma tean igaühe lemmik topic-- Ma olen kindel, et see sulas meelt ajal loeng, ärge muretsege, Ma ikka selline ei saa aru. Kõik on korras. See oli nali. Ma tegelikult ei saa aru. Aga ma veenduge, et kutid saavad seda ka. Nii et me läheme veeta tõesti, tõesti hea summa aega rääkinud pointer täna. Nagu näete, Candy jutt on suur täna. Me tõesti hoida selle-- Jah, see on õige. Jätkake kommi. Ma lähen edasi neid ümber kohe. Ära muretse. Me läheme tõesti proovida hoida inimeste veresuhkru up, sest et aju läheb põlema mõned hapniku täna, sest viiteid on tõesti väga raske. Siis me ei kavatse rääkida mäluhaldus millist on samas vallas. Ja me ei kavatse liikuda edasi suunamine ja faili I / O, mis on vaid süntaks, kena asju, mida me peaksime rääkima. Ja siis lõpuks, ma olen läheb jälle proovida lahkuda, nagu 10, 15 minutit pset4. See on tingitud mõne päeva nii et me oleme läheb tõesti selline teile mõned kasulikke näpunäiteid kui te juba sai alguse sellest. Cool. OKEI. Nii mõned teated selle järgmiseks nädalaks. Hindamisviis. Ma ei tea tegelikult on Siinkohal, kui palju sa Poisid on tegelikult minu section-- sa OK seal? OKEI. Aga neile, kes on minu osa, Vaid paar kommenteerib mune. Esiteks, tõesti head tööd kommenteerides. Neile, kes ei kommenteeri, siis tean, kes sa oled, sest sa ilmselt sain mõned stiili punktid dinged sel nädalal. Lihtsalt veenduge, et kõik teie programme lisada paar kommentaari. Tõesti, stiil on väga lihtne saada õige punkte ulatus. Nii et me lihtsalt teha kindel, et sa oled selline lisada lühikirjeldus kõik Sinu programme, mida sa teed. Secondly-- see on suur probleem palju TAS möödunud week-- nii, et sa oled üleslaadimist õigesse kausta korrektselt nimega programme. Ja põhjus, miks me küsime seda on sest meil käigus hinde tegelikult käivitada skripti oma kood, mis laeb automaatselt kõik oma psets, jookseb õigsuse testid neid kõiki, ja siis laeb oma skoori otse gradebook. Kuid igal hetkel, kui te nimeks oma programmi valesti, see ajab kogu Programm kõigile. Ja nii õiguspärane, see ilus script et me oleme kirjutanud, et ei Kõik see meile täiesti jookseb kui sul ei ole oma programmi nimega õigesti. Nii lihtsalt üles laadida õige kausta, on need õiged andmed, ja siis elu on hea. Ma saan oma psets tagasi kutid varem sest ma saan hinne kiiresti. Jah. OKEI. Ja ka me ei kavatse rääkida about-- Yale on tõesti Veider ajakava nende järgmise kahe nädala jooksul. Nii et need kutid on Harvard, see ei kehti. Aga meile armas lapsed Yale'i meil midagi, mida nimetatakse sügisel break-- kahju, Harvard-- kus meil Viie päeva pealt kooli. Ja kuigi see on armas, see Selline messide up meie pset rütmi sest psets on tingitud neljapäeval, reedel. Ja kui me ei ole siin Neljapäeval, reedel, me ei ole töö kutid kavas neljapäeval, reedel. Mida me teeme on-- me oleme nagu 99% kindel, et see on see, mis juhtub, võib esineda muuta, kuid ma arvan, et see on subtle-- on läheme have-- sel nädalal on normaalne. Nii et meil on meie jagu Teisipäeviti järgneb tööaega kogu ülejäänud nädal ja siis pset4 on tingitud reedel. Siis, kui kutid kõik teame, kui Meeldetuletus kutid eelmisel nädalal, meil viktoriin 0 tulemas kolmapäeval. Ja nii on õpilane ise, Ma tean, et väga vähesed teist poisid tegelikult töötavad pset5 kaks päeva enne oma viktoriini. Nii et me läheme ilmselt lõpuks teeme tähendab, et esmaspäeva õhtul, me ei kavatse tegelikult, 5:30-07:00, on lühike ülevaade istungil teemasid. Selge, kas see on vaatab istungi või Q & A. See on mingisugune ülevaade vorm, kus me katta mõned teemad olulised kutid. Ja siis esmaspäeval ja teisipäeval ööd Selle nädala 8:00-11:00, me ei kavatse olla tööaega. Need tööaega toob kõige suurema tõenäoliselt rohkem just tulla, küsi ajutise töötaja oma küsimusi mis tahes mõisted oled segaduses, ja nad omamoodi minna üle teiega ja läbivaatamise mõisted viktoriini. Quiz 0, kui sa oled Esmaspäeval, kolmapäeval osas on kolmapäeva jooksul class-- kolmapäeval ajal klassis. Ja siis, kui sa oled Teisipäeval, neljapäeval osa, saab ka tunni ajal neljapäeval. Sa ei saa tõesti valida milline sa minna. Kui oled esmaspäeval, kolmapäeval, sa pead minema kolmapäeval. Kui oled teisipäeval, neljapäeval sa pead minema neljapäeval. Aga siis, et öösel, Meie armas töötajaid, siis on hiiglaslik viktoriin liigitamise poole mis me jõuame oma hinded sulle tagasi Sel ööl. Mis ajal? Ebaselge, kes teab, kuid see tagasi teile 24 tunni jooksul nii et kutid loodetavasti mõned tagasisidet reedel. Ja siis on meil tõesti hull nädal. Nii pset5 on üks raskem psets aastas. Nii kahju poisid. Mida me ei kavatse proovida teha, on meil plaanis teha mõned tegelikku toetust, et nädalavahetusel. Sest, nagu kutid näha, pset on tingitud enne langemist murda. Meil ei ole toetust kutid sügisel murda ja nii me tõesti selline tahan fraasi seda, lähme selle üle, kus, Teeme tõesti väga raske, Nende kahe järgmise nädala, saada see viktoriin ja lisada need kaks psets teha ja siis poisid on kena lõõgastav seitse päeva mõtlemata CS. Nii et selleks, et juhtuda, oleme ilmselt Liigutatav minu osa pühapäeva pärastlõunal. Tuleb filmitud seega pole mured, kui sa ei saa tulla. Aga online filmimine hakkab seal ja kättesaadav nii et teiega on pühapäeval, Esmaspäev, teisipäev, töö pset5. Ja siis on sügisel puruneda, ükski CS ja siis me tuleme tagasi ja tagasi lihvima. Aga see saab olema armas nädalas sügisel murda ja me tõesti tahame, et oleks stress tasuta kõigile võimalikult mis Seetõttu kolisime pset olla tingitud enne langemist murda, mitte pärast. Kuna it's-- ma mõtlen, et ma selline tunne nagu see vastuollu eesmärgiga võttes tähtaja pärast langust murda, kui seal on ei toeta niikuinii sügisel murda. Nii et see on rather-- ma arvan me tahaks pigem keskenduda nüüd. Kas kellelgi on küsimusi sellest ajakava? Midagi segane? Jah. Sihtrühm: Kas meil on veel loengu 21.? ANDI PENG: Jah. Nii 21., seal saab olema loeng, mis on live Harvardi. Ma ei tea, kui David on filmimine või kui ta on tegelikult õpetamiseks, kuid see saab olema saadaval Online kutid juurdepääsu. Nii lihtsalt veendumaks, et kitsenduse tund kuskil sügisel murda nii kutid ei saagi üles, et loeng. Jah? Sihtrühm: Jah. Vabandust. Ma sain siin couple-- ANDI PENG: Ära muretse. Siin, võta kommi. Sihtrühm: Hei, Ma sain selle. Nii lihtsalt sulgege, mitte homme, vaid Kolmapäeval pärast, et meil on viktoriini. ANDI PENG: Õige. Sihtrühm: Ja see on- Mis formaadis viktoriini? ANDI PENG: Oh. Nii me saadame välja talle, et hõlmab kõiki, et põhjalikumalt. Aga sisuliselt see lihtsalt katab põhilised teemad on juba kaetud esimesel poolel poolel. Me peame toimuvad kohtumised ja küsimus ja vastused nii ei muretse selle pärast. Aga me minema üle, et liiga. Sihtrühm: Kas see saab olla, me tuua meie arvutid ja koodi there-- ANDI PENG: Ei See saab olema kutid kirjalikult ja küsimustele vastamine käsitsi. Sihtrühm: Oh. ANDI PENG: Nii anname välja tavade ja värki nii kutid tahavad olla minna tagasi kirjutada Mario käsitsi lihtsalt veendumaks, et poisid on idee, kuidas seda teha. Sest mõnikord, kui Sa kirjutad käsitsi teil unusta semikoolonid ja värki ja see on tõesti halb. Sihtrühm: Ei, et olla [kuuldamatu]? Like, te saate semikooloniga your-- ANDI PENG: Jah ja ei. Me räägime põhjalikumalt selle kohta, kuidas viktoriin paigutus on ja kuidas me kavatseme hinne. Aga põhimõtteliselt, lihtsalt tean, et Üldvormingu läheb sul poisid kas tõlgendades code-- vastates põhiküsimused. Kui ma küsisin teilt, mis on raamatukogu? Te peaksite teadma, mida teek teeb ja üles kirjutama. Või võib öelda, kirjutada programm, mis prindib Hello World ekraani. Te ei kirjuta, int main void printf hello world semikooloniga. Jah. Sihtrühm: Nii see ei lähe olla kuskil [kuuldamatu] raskusastmega probleemi seada? ANDI PENG: Ei Ei. Me won't-- yeah. Kirjutage tervikuna on Mängu 15. 20 minutiga, minna. Ei, see ei ole nii. Ei. Sihtrühm: OK. Nii et on kolmapäeval. Sel nädalal on meil ka on kõige raskem probleem seada? ANDI PENG: Ei Nii et probleem seada tõttu päev enne langemist murda. Schedule-- e-posti tegelikult saata 20 minutit tagasi seoses kõigi käesoleva. Nii kutid lihtsalt vaadata oma e-kirju. See oleks seal. Jah. Ära muretse. Cool. Iga üldised küsimused Teated, liigitamine, viktoriinid, Enne kui me sukelduda otse viiteid, mis tarbib enamus meie osa ajast täna? Cool. Hästi. Nii tegi kutid kõik vaatavad seda lovely-- Ma ei tea, mida nad nimetavad seda. Asi, kus claymation puhus ennast üles, sest see ei kasuta osuti õigesti. Noh, teie programm läheb ilmselt löök ise üles, kui sul ärge kasutage vihjeid õigesti ka. Nii et me kavatseme teha kindel, et ei juhtu. Täna me ei kavatse teha mõned pointer lõbus. Ma lähen üle asju nii ladusalt kui ma arvan on võimalik väike aja jooksul. Aga seal on lihtsalt nii palju, et katta et ma tõesti tahan teiega, kui te ei saa aru midagi, mitte ainult mulle edasi. Sest kui sa seda ei tee mõista midagi, sa oled ilmselt ei kavatse aru midagi ütlen pärast seda. Nii et palun mind peatada ja esitada küsimuse. Sest see igasugu lumepalle koos. Like, viiteid viivad mälu kujunevad muid asju. Ja kui sa ei saa aru, viiteid, mind peatada ja me sellest aru saada ja elu saab trahvi. Cool. Niisiis, kuidas paljud kutid loeng, kui David mainitud suunanäitajaks, Sinu aju selline muutus kaller-O? Jah. Väga hea. Me läheme püüdma de-kaller-O oma ajusid täna. Me läheme tõesti süstemaatiliselt läbida, mis täpselt osuti on, mida ta teeb ja kuidas me neid kasutada. Nii et kõik pointers-- nii tavaliselt koos muutujad Oleme kasutanud kodeerimine, nagu muutujaid nagu täisarvud või stringid või ujukite, nad on kõik sisuliselt väärtus, mis neile samuti aadress osutades, et väärtus. Nii et ma lähen juhtida seda kohe. Meil on peaaegu mingit kriiti, kuid see on OK. Nii näiteks, tavaliselt nii, et me oleme kasutanud muutujad on loome muutuja nimi tüüpi int, olgem lihtsalt öelda. Nii et siin on meil int x ja me oleme initializing et int 50. Nii siin mäluploki meie arvutite oleme salvestatud number 50. Nii et kui osuti tulevad mängu on et arvuti itself-- nagu siin, füüsiliselt kõvaketas RAM minu computer-- see on ainult piiratud kogus mälu. Sa ei saa lihtsalt hoida hoidmiseks asju peal asju peal asju ja kõik nad on. Nii nii, et me dünaamiliselt jaotada mälu on võimalik säilitada, mida me tahame ja sellele juurde, on lastes suunanäitajaks. Seega kujutada oma mälu, eks. Kui see on RAM oma arvuti, siis on neid vähe bitti või plokkideks või baiti mälu misjärjekorras need on vaid väike plokid, mis on määratud läbi kõvakettale või RAM arvuti, ja iga nende plokid saate salvestada erinevaid asju. Nii näiteks üks massiivi selles näites siin on üks bait, mis on kuhu kuuluvad kaheksa biti. Number muutub sõltuvalt operatsioonisüsteemi arvuti. Näiteks, kui palju teil on kuulnud 32-bitine vs 64-bitise operatsioonisüsteemi süsteemid? Täpselt. Nii et kõik, mis on öelnud on see, et memory-- et viis, et arvuti juhib mälu on erinev. Mistõttu see on tõesti oluline mõista miks mälu toimib iseenesest pigem kui pöörata tähelepanu numbrid. Nii et me tõesti ei hooli kui suur see massiiv on meil vaja ainult hoolid kui suur on meil vaja int olla, kui suur on meile vaja string olla, kui suur on osuti? OKEI. Nii et see saab olema palju raske, tihe teavet. Ma annan teile poisid Paar Comic Relief hetked siin. Te peaks kõik olema võimeline mõista seda nüüd. Kuna me teame, et osuti on aadressid, ja need on erinevad muutujad. OKEI. Cool. CS naljad on parim, jah? Nii nii, et me läheme umbes luua pointer on väga spetsiifiline omamoodi süntaks. Nagu tekitamata tüüpi muutuja, see on saab olema konkreetne süntaktiline me kasutame, et luua seda. Nii et kui kuulutatakse igal pointer, osuti on lihtsalt essentially-- Ma arvan, et oluline osa suunanäitajaks on et arvestades, et muutuja on Nii väärtus ja aadress, osuti on aadress. Selle väärtus on aadress. Nii see on aadress salvestatakse erineval aadressil. Kui see loogiline. Me läheme üle selle üksikasjalikumalt, aga see on geneeriline vorm of miks--, kuidas printer on salvestatud. Nii nii, et loote pointer on tehes mis tahes tüüpi andmeid et osuti läheb olema viitamine ja then-- koos star-- ja seejärel nimi kursorit. Nii et siin, kui me tahtsime luua kursorit, et osutas täisarv, ja me tahtsin nimi pointer olla x, me teeks int star x. Jah? Sihtrühm: Ja nii, kui järgmine rida teile teha int x, siis kas int star x näitavad asukohast x sa määratlemisel hiljem? ANDI PENG: Tõesti hea küsimus. Me läheme üle selle paar libiseb hiljem. Jah. Ja siis sama asi char ja sama asi ujub. Lihtsalt tean, et sel hetkel oleme loonud pointer, me ei ole tegelikult esitatud see võrdse midagi veel. Me ei ole tegelikult viidatud seda. Sama siin, kui loote muutuja, olete loonud muutuja nimi, Te ei ole tegelikult väärtuse määramiseks ta. Sama asi siin. OKEI. Niisiis, kuidas me seatud väärtused viiteid? See on viitamine ja dereferencing. Nii nii, et saame viide varia-- osuti sisuliselt naaseme aadress mälu millest muutuva on salvestatud. Nii et kui mul oli pointer-- Ma joonistan seekord me saada järgmisele slaidile aga lihtsalt tean, et sisuliselt and-- ampersand ja variable-- kõik, et ei ei öelda aadress kus midagi salvestatud. Ja dereferencing on vastupidine Selle, mis on lihtsalt täht. Staar lihtsalt annab teile tegelik salvestatud andmed sellele aadressile. Nii et üks annab teile aadress hoitakse aadressi, Teisest annab teile tegelik salvestatud väärtus aadressil. Nii kaks neist saadi Teile erinevaid asju. Taas slaidid kõik veebis, ei muretse kui te poisid ei saa kopeerida Selle alla ajas. Võtame pilk See näide siin. Nii on meil hiiglane mälu massiiv siin, eks? Kus me lihtsalt plokid mällu või baiti mälu, kus saame salvestada erinevaid asju. Ütleme nii, et need on aadress punkte mälu. Nii millal on - vaata 0x, kõik, mis ütleb teile, et see on kuueteistkümnendarvudega. Nagu te poisid kõik teame, numbrid võiks põhineda erinevatel alustel. Base 10 on, kuidas me tavaliselt tõlgendada numbrid. Seal on ka alust 2, mis on binaarne. Ja sel juhul, kuueteistkümnendsüsteemis on aluseks 16. See on lihtsalt teistmoodi öelda nullist 10-- või null üheksa ja siis ka A, B, C, D, E, F. Samuti viitab erinevate numbrite puhul. David läks üle selle loengu lühidalt. Kui Te olete segaduses, Google'ist. Seal tõesti Hõlpsasti õppida mida kuueteistkümnendkoodis on. Kõik see on tõesti asjakohased just nüüd on teie jaoks poisid teada, et kuueteistkümnendarve C ütleb sina-- et tavaliselt ütleb teile, et see kursor. Või see on aadress. Nii et näiteks siin, int x võrdub 5. Me luua integer-- sorry, tüüpi muutuja täisarv ja me initializing see 5. Nii et siin meie mälu pardal, saame näha, et x on aadressil 0x0 ja väärtus, et sa oled salvestatud sees on 5. See peaks mõtet kõigile, eks? OKEI. Ja siis me oleme teinud II rida koodi on see, et oleme loonud osuti tüüpi int. Seda int star pointer teeb. Ja see võrdub, et ampersand x annab sulle aadressi midagi. Nii aadress x Selle näiteks on 0x0. Ja nii, et aadress on salvestatud, et kursor. Kas see mõtet kõigile? Nii arvavad see-- mõtle pointers-- siin Yale'i meil PO box süsteem kus igal õpilasel oleks posti aadress, kus võid minna keldrikorrusel LW ja te saate lihtsalt minna ja haarata mida iganes sa vajad, et aadress. Sama asi juhtub Siit arvutis. Sa pead need mälu baiti, et saab salvestada informatsiooni, kuid selleks, et teada, mis infoväljad match up, mida sa üritad leida ja kui teil on vaja viit, et ütleb teile, kuidas sinna minna. Nii näiteks on minu jaoks, minu postkast, Mul on konkreetne viiekohaline number. See on minu aadress. Nii et ma ei füüsiliselt minna mälu Võin vaadata aadressil, Ma ei saa minna, et PO box ja juurdepääsu andmetele sees. Kas see mõtet Everybody Arvuti on sisuliselt teeb täpselt sama asi. Nii et kõik pointer teeb on see, et see on lihtsalt luua mälu ja selle mälu andmed on tegelikult aadressi midagi muud. Siis võid minna ja leida seda. Igaüks hea? Igaüks hea minuga nii palju? OKEI. Cool. Hästi. Nii peaaegu sama asi nagu enne. Seega peame esiteks muutuja nimetatakse x, kus case-- Ma lähen selle väärtuse muutmiseks 5. Ütleme lihtsalt aadressi Selle mälu on 0x0. 00. Hea. Niisiis, meie teine koodirida, et me oleme kavatse luua pointer nimetatakse PTR pointer. Ja aadress, et lähme lihtsalt öelda, et on 0x01 mälu. Ja me tegelikult tahame store-- ampersand x annab sulle aadressi, mis x oli. Ja aadress x oli 0x00. Nii et see kursor nüüd tegelikult on aadress salvestatakse selle väärtus, mida x oli. Igaüks minuga nii palju? Cool. Ja siis, nii, et me kopeerida, et on, kui me tunnistada ja initsialiseerida teise ploki mälu tüüpi int. Õigus? See oleks int. See oleks nn koopia. Ja sa lähed get-- nii star pointer annab teile tegelikud andmed sellelt aadressilt. Ampersand annab sulle aadressi, star annab teile andmed. Nii et andmeid pointer. See osuti osutab 5. Ja nii see funktsioon siin-- staar pointer-- läheb, läheb kõik, mis on Ploki ja salvestab selle siin. Igaüks selge, kuidas see juhtus? Nii et kaks operaatorit õigus there-- ampersand ja star-- lihtsalt teha erinevaid asju kui kasutada viiteid. Üks saab teid aadressil üks saab teid tegelikku väärtust. Seega veenduge, et kui poisid on kodeerimine, et te ärge ajage kahe sest nad on väga erinevad. Siin on meil kena näide 0x01. See on tõesti kena väike number meeles pidada. Oma tegeliku arvuti sa lähed on hiiglaslik perse number, et on midagi see ei ole kena, ei ole meeldiv. See saab olema mingi prügi väärtus. Ja nii see läheb tõesti, tõesti segi ajama oma programme. See on väga oluline, kohe, et meil on põhialuste maas miks-- nagu, Mis on füüsiliselt juhtub siis, kui näed neid plokke koodi. Everyone-- jah? Sihtrühm: Nii int x võrdub int koopia? ANDI PENG: Ei, sest sel juhul, int x-ist väärtus x-ist võrdub 5, eks? Ja siis int koopia võrdne 5. Nii et kui sa olid võrdsustada neid teineteist, sest nad on täisarvud, jah, nad TÕENE. Aga kui nad olid stringid mälu, nagu üks, mis Taavet tegi jooksul näiteks mis on erinev, sest nad viitamine aadressid kohti mälu ja nad vastaksid vale. Nii et siin oleks tõsi, sest sa oled otse võrrelda values-- integers-- kuid teised olete viitamine punkti. Kuna string on massiiv, ja all-- me räägime sellest later-- kuid massiiv on sisuliselt vaid kursor kamp tähemärki mälu. Nii et need on natuke erinevad. Aga sel juhul, jah, sa võiksid seda teha. Sihtrühm: Kas oskate selgitada aadressi koopia? ANDI PENG: Jah. Nii et Lihtsalt-- ma ei täida väärtus aga see on lihtsalt mingi suvaline muu prügi väärtus, et me ei hooli. Sest kui hakkate programmi sa mõistad, et me ei ole tegelikult tõesti huvita, mida tegelik aadressid, Me lihtsalt vaja teada Mis aadressidel. Jah. Sihtrühm: täht kõrval int kohta Teine rida, mis on erinev than-- ANDI PENG: Jah. Sihtrühm: --the dereferencing ja viitamine star? ANDI PENG: Jah. Nii autorid C- kes otsustasin kirjutada keeles C- ei olnud väga tark. Nad ei olnud väga tark üritab aru saada, miks me peaksime seda tegema. Kui see oli mulle, ma tahaksin kindlasti kasutada kahte erinevat märki. Aga nad otsustasid kasutada seesama. Nii tähe pärast int, mis ütleb arvutile et sa oled umbes luua pointer. Aga kui sa üritad apparent midagi-- teisisõnu, minna aadress ja tõmmake andmed somewhere-- star kasutatakse erinevalt. Nii kutid lihtsalt olema ettevaatlikud ei jama kaks kasutab. Cool. Jah? Sihtrühm: Nii lihtsalt kordama veenduge, et ma olen following-- ANDI PENG: Totally trahvi. Sihtrühm: --in vasakul pool et slide, me teeme midagi, mida me teame. Me kinnitame täisarv [Kuuldamatu], mis on võrdne 5. ANDI PENG: Jah. Sihtrühm: Right. Ja siis on meil int star asi ja mis ütleb, et OK, selline nagu me deklareeritud täisarv, nüüd me kuulutab pointer. ANDI PENG: õigesti. Õige. Sihtrühm: Right? Ja meie osuti on PTR. ANDI PENG: Yep. Nimi osuti on PTR. Pointer. Sihtrühm: Ja siis võrdub nx et lihtsalt ütleb C et ta tahab pääseda väärtus täisarv x-ist väärtust, et täisarv x määrati. ANDI PENG: Olge ettevaatlik sest ampersand x tegelikult ütleb sina-- arvuti, et sa tahad tõmmata aadressi, mis on x. Nii ampersand annab teile aadress, star annab teile raha. Sihtrühm: Nii et me tahame aadress. Oletame, et x oli at-- ANDI PENG: Me tegelikult tea, mis on x, õigus? Kuna me teame, et x was-- ma olen muutes selle üles, kuid ütleme nii, suvaliselt, see oli 0x00. Õigus? Saame teada, et aadress on 0x00, ja nii kui me läheme ja ampersand x, me teame, et see peaks hindama, et 0x00. Mistõttu me talletatud, et väärtusena meie pointer. Kas see on mõtet? Sihtrühm: Jah. Ja koopia läheb apparent ptr-- ANDI PENG: Right. Sihtrühm: --which on kursor, et me oleme teatas, et ütleb meile aadress täisarv x. ANDI PENG: Jah. Sihtrühm: Ja see Ühel juhul star PTR võrdub x, mis võrdub 5. ANDI PENG: Õige. Sihtrühm: Cool. Ja see on lihtsam viis saada et või on see ainus way-- ANDI PENG: Nii just nüüd ei tundu väga loogiline, et me kulutada kogu see aeg läheb see super keeruline asi, kui kõik me oleme teinud, on lihtsalt luua kaks täisarvud väärtusega 5, eks? See ei ole loogiline. Aga kui me läheme üle mälu eraldamise and-- jagame minna üle, miks see võib olla mugav ja kasulik hiljem. Usu mind, kui ma ütlen, et me ei ole lihtsalt luua nende omavoliline funktsioone teile poisid õppida, sest me oleme püüab jama teiega. Seal on tegelikult kasutab kõiki neid asju ja me räägime neist. Sihtrühm: Awesome. ANDI PENG: Jah. Sihtrühm: [kuuldamatu]. ANDI PENG: Hea küsimus. Sihtrühm: [kuuldamatu]. ANDI PENG: Ei ole. See tõesti ei ole. Sihtrühm: --two muutujad et ka võrdsed [kuuldamatu]. OKEI. ANDI PENG: Jah. OKEI. Enne kui ma liikuda, on kõik selge? Ma tean, et Taylor, sul on natuke hilja. See on OK. See on online. Sul vaadata esimese 20 minuti jooksul ja sul on kõik hea. OKEI. Cool. Hästi. Nii et see on sisuliselt mingi Sarnane asi, mida me just tegid. See on lihtsalt graafiline vorm. Kui sa olid jälgida, mida lihtsalt juhtus, int x võrdub 5, kõik me oleme teinud sel hetkel on luua muutuja nimega x-tüüpi int. Me läheme salvestada väärtus 5 sees on. Pole pointer, sest meil ei ole tegelikult loodud osuti veel, eks? Ja siis järgmises line, int star pointer, see on kui me tegelikult füüsiliselt luua kursori ja me seade, mis võrdne või viitamine kursor, et ampersand x. Milline on koht, kus kõikjal mälu see juhtus olema. Ma tegelikult ei viitsinud moodustavate väärtus seekord. Aga sel juhul, et punkti siis oleks võrdne sellega. Ja siis seal on star pointer on dereferencing. See, kui me oleme tõmmates informatsiooni. Nii et väärtus x on tegelikult võrdne 35. Nii sel hetkel, me oleme sisuliselt lihtsalt reinitsialiseeritud x 35 ilma tegelikult puudutamata x. Just läbi pointer mis osutab x, me saame tegelikult muuta seda, mis x oli. Ma lähen seda klaarida samuti. Nii et siin me oleme loodud mingi suvaline aadress siia. Ütleme nii, 0x00 uuesti. Ütleme nii, et see on aadress. Ja oleme loonud täisarv nimega x ja väärtus Olen määratud on 5. Teisel real, int pointer-- nii et nüüd me oleme sain selle teise asi siin nimetatakse pointer-- ja me läheme mina-- Ütleme see on mingi muu juhuslik mälu aadress. Nii et me läheme määrata selle võrdne iganes see oli. Ja see kursor läheb kohakuti väärtus x Ja siis, kui me muudame the-- kui me star pointer, et läheb kuni väärtus meie pointer. Sel juhul läheb jälgida see nool üle selle väärtuse x ja see läheb ära muuta 35. Sisuliselt me ​​lihtsalt muutunud x puudutamata x. Läbi lihtsalt viitamine viiteid, saame minna ja väärtust muuta x. Kas see on mõtet? Nii et sel viisil saame tegelikult ümber ja rechange ja ümberjagamise väärtused asju, mida me ei tegelikult teha ise. Kas see mõtet kõigile? Cool. OKEI. Nii keeruline graafiline siin. Mine rida-realt. Sisuliselt lihtsalt teha täpselt Sama asi, mis ma tegin. Enne kui ma liikuda, ma tõesti lihtsalt et kõik on tõesti selge see. Nii siin on kood, mis meil on int a on 3, b võrdub 4, c võrdub 5. Nii oleme loonud kolm täisarvu nimega a, b ja c, mis on võrdne 3, 4 ja 5. Ja siis me luua kolm viiteid Sel hetkel, et kõik need muutujad. Ja nüüd me läheme minna üle sisuliselt Mis juhtub siis, kui kasutad neid. Nii juhtida neid. Võtke leht paper-- ma ei tea, kas te poisid kõik on paber, kuid need, kes seda ei tee, võib-olla laenata neile, kes teevad. Võtke paberilehte ja minna rida-realt. Ja igal operatsioon, mis sa teed, Ma tahan teiega tegelikult kirjutada mis on a, b ja c selles punktis. Ja millised on aadressid, mida on vihjeid, mis viitavad a, b ja c sel hetkel? Ja siis loodetavasti on selline samm kutid läbi, kuidas mõelda suunanäitajaks. Me ei lähe kaudu neid kõiki. Äkki ma annan sulle five-- jms, kolm minutit. Alusta paar esimest. Oh. Oops. Sihtrühm: Teisel real, miks ei ole täht [kuuldamatu] muutuja? ANDI PENG: Mäleta ettevõtjad, esimesel nädalal, me rääkisime, kuidas kui sa plus võrdsete, mis tähendab lihtsalt võrdub pluss c. Selles case-- nii et see on veel üks viisi star võiks kasutada. Lisaks viitamine ja kuulutatakse suunanäitajaks, meeles pidada, et see ka tähendab korrutamist. Nii et sel juhul tahaks lihtsalt olla võrdub korda c. See on lihtsalt nii erinevad viis kirjalikult. Sihtrühm: a on võrdne kordi c. ANDI PENG: Jah. Sihtrühm: Mida see tähendab, kui see ütleb ampersand kirja? ANDI PENG: Ampersand vahendid sa lähed selle-- oled läheb koht kursor on juhtides ja tõmmates aadress. Nii ampersand annab sulle aadressi, star annab teile tegelik väärtus on. Sihtrühm: Kas me oleme tuginedes rida-realt? ANDI PENG: Sa oled tuginedes rida-realt. Nii lihtsalt minna ühe rea aeg ja then-- sa ei pea muretsema viimistlus kogu asi. Proovime saada läbi võib-olla kaks, kolm rida ja siis me kokku ja lõpeta see. See on täiesti OK, kui teiega on kadunud. See on tõesti raske mõiste. Kui kutid on mures, et klassi läheb niimoodi nagu David ütles, see ei esine. Me jõudmist kontseptuaalne tipp raskusi ja siis läheb olla langev. Nii kutid on peaaegu kohal. Meil on palju kommi saada kutid läbi küür. Ma arvan, et päris palju pärast langust murda saadame üle küür ja elu on jälle terve. Nii ei muretse üldse. Hästi. Ma annan sulle poisid 20 sekundit veel pakkima. OKEI. Hästi. Võtame stab seda. Nagu te poisid mulle vastuseid, Ma lihtsalt kirjutada neid. Ja loodetavasti we-- ma saan? Ma tegelikult ei kirjuta see. Ma joonistan selle pardal. Nii et siin see esimene rida meil on võrdne b täht c. Samuti Elliot üles kasvanud tõesti, tõesti hea koht. Sest ma unustasin, et lisaks Kahe viisidel saab kasutada tähtsümbolitega, seal on tegelikult ka kolmas võimalus. Paljunemine. Ja nii lihtsalt ei saa segaduses, sest mis on esimene võimalus kasutada star. See on lihtsalt ütlen arvuti et ma olen umbes luua pointer. Teine võimalus tehes staar kursor, mis ütleb kursorit, et soovite juurdepääsu andmetele sel pointer. Ja siis muidugi, seal on just lihtne korrutamine Kahe numbrid, mis ütleb, et ma tahan korrutada kaks. Nii on palju viise saame kasutada tähtsümbolitega. Ärge sattuge segadusse. Lihtsalt veenduge, et te poisid aru täpselt, mida kõik kolm neist teevad. Nii et esimene rida, a on võrdne b korda c. Nii lähme läbi, mida on, mis on b, mis on c? Ja mis on osuti, mis on kursor B ja kursor c? Mis on need kõik on võrdsed? OKEI. Nii me alustad võrdub 3, b võrdub 4 ja c võrdub 5, eks? Nii et pärast, et esimeses reas, võivad keegi mulle öelda, milline on? Jah. Julgelt lihtsalt hüüda vastused. 20. Väga hea. Mis b? Sihtrühm: 4. ANDI PENG: Mis c? Sihtrühm: 5. ANDI PENG: Jee. Väga hea. Mis on pa, pb ja pc? Sihtrühm: 000001 ja 002? ANDI PENG: Jah. Nii mingi nipiga küsimus kuid tegelikult, sest siin ma tõmbas tegelik mälestusi. Aga seepärast, et näiteks, me ei tegelikult tea, mida need numbrid on, saame öelda ampersand. Ma isegi ei tea, kas ma saab juhtida ampersand. See on like-- kuidas sa seda teed? Sihtrühm: Like juhtides kaheksa. ANDI PENG: Like kaheksa. Nagu see. OKEI. Sihtrühm: Bingo. ANDI PENG: Killing ta. Nii ampersand a, saate lihtsalt teha. Sest me ei ole tegelikult huvita, mida väärtust, mis on, ja see on mingi pikk ass väärtus niikuinii, me kasutame lihtsalt Giong öelda ampersand a. Mis siis pb? Sihtrühm: [kuuldamatu]. ANDI PENG: Jah. Cool. Hästi. Lihtne esimene rida. Me saime selle. Lähtekohad on lihtne. See on OK. Teine rida. Ja nii star võrdub on sama asi nagu öeldes võrdub korda c. See on lihtsalt lihtsam viis kirjalikult. Nii et me ei püüa teha punkti või midagi siin. Nii tehakse esimese rea. Mis on teisel real pärast sa ei võrdub korda c? Sihtrühm: 100? ANDI PENG: See on 100. Väga hea. Kuidas b? Sihtrühm: [kuuldamatu]. ANDI PENG: Kuidas c? Sihtrühm: [kuuldamatu]. ANDI PENG: Ja kuidas osuti? Kas they-- sama, eks ole? OKEI. Nüüd kolmandal real. Little keerukam. b võrdub star pa. Kas keegi mulle öelda, esimene, mida see täht pa võrdne? Sihtrühm: See on väärtus mis on salvestatud kell. ANDI PENG: Täpselt. Ja mis on väärtus mis on salvestatud kell? Sihtrühm: 100. ANDI PENG: OK. Nii milline oleks olla pärast täidesaatva et koodirida? Sihtrühm: [kuuldamatu]. ANDI PENG: Kuidas b? Sihtrühm: 100. ANDI PENG: Jah. Ja siis kõik muu on päris palju muutunud, eks? Kuna me ei puutu seda. Cool. Neljas. Veidi keerulisemaks. Nii pc-- taas pc on pointer mis osutas C- võrdub pa. Mis on? Sihtrühm: 100. ANDI PENG: Mis on b? Sihtrühm: 100. ANDI PENG: Mis on c? Sihtrühm: 5. ANDI PENG: Mis pa? Sihtrühm: ampersand a. ANDI PENG: pb? Sihtrühm: Ampersand b. ANDI PENG: Ja keeruline, mis on pc nüüd? Sihtrühm: ampersand a. ANDI PENG: Jee. Woo hoo. Te näete? See kõik on õige. See ei ole liiga halb. Meil on rohkem kommi kui see pole veel kõik õigus, kuid ma arvan, et see on kõik õige. Ja me läheme üle vaid üks rohkem, enne kui me tabanud raskem ones. Vastused Mul on siin. Sisuliselt tean, et see on nagu matemaatika sel hetkel. Kui teil on lihtne võrrandid nagu pluss b, kordi c, mida on lihtne teha. Ja kui hakkate laiendades see, minge järjekorras toimingud. Sama asi nagu enne. Jälgi, kui teie star on enne midagi. See ütleb teile väärtus. Kui teil on enne midagi, ta ütleb teile aadressi. Ja siis tuleb määrata kas viiteid või selle väärtuse. Nii lähme üle selle viimane reaalne kiire. Pole see viimane, vabandust. Tegelikult kutid saavad valida. Kumba te poisid tahavad minna Üle välja Ülejäänud kolm et meil on? Ma ei usu, et me saame teha, et sest me ei saa lihtsalt hüpata line. OKEI. Te ei ole valikut, see on lihtsalt kolmanda kesta üks. Star pc võrdub b korda c. Sihtrühm: Star pb? Sihtrühm: Star pb. ANDI PENG: Vabandust? Sihtrühm: Star pb. ANDI PENG: Star pb. Oh, minu halb. Star pb võrdub b korda c. Ma annan teile poisid 10 sekundit. Just kiiresti mõelda. See on see, et meil on nii kaugel, mis juhtub, kui me täita, et viiendas reas seal? OKEI. Mis on? Sihtrühm: 100. ANDI PENG: 100. Mis on b nüüd? Sihtrühm: 500. ANDI PENG: Hea. Kas keegi taha seletada mulle, miks see on 500? Ma ei tunne me tegelikult kunagi puudutanud b. Kuidas me suudame muuta väärtus b puudutamata b? Jah? Sihtrühm: Kuna star pb tähendab väärtus pb-- ANDI PENG: Täpselt. Sihtrühm: --which on b. ANDI PENG: Täpselt. Nii et siin on meie diagramm, meie pointer pb on tegelikult suunatud sellele õigus Siit, mis on tegeliku füüsilise b. Ja kui te lähete ja sa star pb, mis on pärast oma noolega oma pointer ja füüsiliselt väärtuse muutmist b. Nii et miks me oleme b muutunud 500 ilma tegelikult puudutamata b. Ja siis kõik muu jääb Sama sest me ei puutu seda. See on b. Cool. Ja siis-- Sihtrühm: Ma lihtsalt küsimus. ANDI PENG: Jah? Sihtrühm: Kuna we've-- pole enam ampersand c, see tähendab ampersand suunab sama asi nüüd? ANDI PENG: Yep. So-- Sihtrühm: Nii nool Selline lihtsalt liigub and-- ANDI PENG: Nii essentially-- Sihtrühm: --now me ei saa access-- ANDI PENG: --when me apparent c nüüd-- ma võltsija. Mis see oli? Kolmas rida? Neljas. Neljas. Kõik me tegime oli sisuliselt muuta see nool ja on see osutas asemel. Sihtrühm: Nii et me ei pääse c enam. ANDI PENG: Kui sul oli see täpse number, siis võiks seda kasutada. Aga, no. Meil ei ole osuti ulatuvad c enam. Ma arvan, et kui sa tahad uuesti selle juurde tagasi pöörduda, siis looks teise pointer, et uuesti osutas c või dereferenced seda ja tõi tagasi. Niisiis, ei, just nüüd, kolm suunanäitajaks, ükski neist ei viita c. Igaüks hea? Vastused on praegu portaalis. Julgelt pärast paragrahvi minna üle Viimase kahe ja ennast proovile panna. Sama mõistet, vaid natuke keerukam. Jälgi läbi loogika miks asjad on erinevad asjad. Ja vihje, vihjeid on teema, et me armastame katta kohta viktoriine, sest nad on kontseptuaalselt väga keeruline. Nii et ma soovitan, et te poisid kõik vaadata seda tabelit või kaldkriips sarnaseid mõisteid see enne oma viktoriin järgmisel nädalal. Sihtrühm: Vabandage mind. ANDI PENG: Jah? Sihtrühm: [kuuldamatu] lõplik one-- [kuuldamatu]. ANDI PENG: 50,000? Mul oleks vaja seda järgida tagasi alla. Aga somewhere-- Ma arvan, et rida Enne, sa loodud hiiglaslik c väärtuse. c võrdub see hiiglane asi mis on 100 korda 500. Ei. Sihtrühm: [kuuldamatu]. ANDI PENG: Jah. 100 korda 100, mis on 10.000. Milline on 10.000. Nii tagasi sinna sa oled korrutades b ja c. Nii osuti, mis osutab b-- mis on väärtus 500-- korda a-- Sihtrühm: [kuuldamatu]. ANDI PENG: Võib-olla see on vale. Sihtrühm: Ei, ei, see ei ole. [Kuuldamatu] osuti c on nüüd vastakuti a-- ANDI PENG: Jah. Ta on õige. Sihtrühm: --it on selle juures võrdsete korda-- see väärtus c. ANDI PENG: Kas oskate öelda, et vähe natuke kõvemini seega kõik kuulen sind? Sihtrühm: Nii osuti c viitab nüüd mida kursor on kasutatud punkti mina-- ja veel does-- kuid nad osutavad sama asi, mis on a, eks? Väärtust, aga see on uuesti määratletud. Ja alguses, et sa oled öeldes oli varem 100 korda väärtuse juures b, mis on 500. Ja nii see on, kui palju see on. 50.000. Nad sa ümberjagamise et mida mälu on c on-- kursorit at c osutades mis on. Nii et sa oled uueks A 50000. ANDI PENG: ta võiks õpetada osa minu jaoks. Järgmine kord, kui see kõik on sinu. Siin. Siin on rohkem kommi eest. Sa väärid kommi eest. Sihtrühm: Ma peaaegu püütud seda. ANDI PENG: Sa peaaegu püütud seda. Pole hullu. Jah. Aga ta oli täpselt õige. Mida sa pead tegema on selle-- Ma arvan, et me peavad järgima asjaolu et osuti on nüüd osutades erinevaid väärtusi. Nii value-- kahju on pointer c repointed a. Ja nii, et nihutada kõik meie numbrid. Ja sellepärast, kui sisenete väärtus salvestatakse seal, see on erinev. Kas see on mõtet? OKEI. Cool. Igaüks hea, enne kui ma liikuda? Sihtrühm: Kas the-- kui sa lähed mööda ridu vasakus veerus, ei esimeses reas mõjutada teises reas ja siis second-- nagu, see on all-- ANDI PENG: Jah. Seega kujutada see kood, kus ma lihtsalt kirjutada on võrdne b korda c, star võrdub c. Kujutage ette, et ma olen lihtsalt jooksis see kood ja ma ei saa trükkida, mida kõik need asjad olid. Kui ma oleksin lihtsalt printida esimene asi ülaosas, oleks siin. Kui pärast jooksin kõik neid ridu koodi, Mis need väärtused tuleks lõpul on seda. Nii et ma olen tegelikult kirjutatud programm siin. Ma ei ole teinud kõik korrutamine. Aga kujutage ette. Nii et siin ma lihtsalt olla programmi nimega suunanäitajaks. Ma lähen vaadet, kui sa guys-- OK. Nii et ma olen loodud muutujad a, b ja c. Olen pani need võrdne 3, 4 ja 5 ning ma olen loodud nende vastavate suunanäitajaks. Ja siis siin ma lihtsalt lähen välja printida, mis see on. Nii et lubage mul joosta, et. Kas te poisid see-- jama. Kas te nägite, kuidas, b ja c on need väärtused kuid nende vihjeid on see hiiglane prügi väärtus, et me ei hooli? Nii et kui ma oleks tegelikult pistik kõikides mitmekordistumine ja siis kordustrükk kõik see oleks täide viia et mis see on allosas. Nii et kui te tahate mängida koos tegelikult füüsiliselt kodeerimine, kutid lihtsalt ühendage kõik need. Kood on online ja siis oma väärtused peaksid printida, et hiljem. Ja siis näed, kuidas pointer aadressid on tegelikult ümber jaotada. Nii näete kuidas aadressi c tegelikult muutub võrdse olenemata aadress oli. Ja nad sobivad iganes et suur hulk on. Hea küsimus. Igaüks on kõik korras? Üks viimase kõne küsimustele. OKEI. Hästi. Nii valmistab on meelt puhutud veidi natuke rohkem. Massiivid on tegelikult lihtsalt suunanäitajaks. Ongi kõik nad on. Ja pidage meeles, mida on stringid? Nad on ka massiive. Mis siis on stringid tõesti? Nad on nagu viiteid, et alguses char enam tähemärki. Nii et see on lihtsalt mõisted, mis algavad ehitada peal üksteist. Nii et miks-- sa mäletan loengut, David, kui ta oli selline võrdlus int string ema on midagi, ja siis teine ​​string ema ja sina proovida võrdsustada kahe teineteisele, nad teile erinevaid väärtusi. See on sellepärast, et stringid ise pole väärtusi. Kõik nad on on mäluaadressid char-- nad on massiivid sümbolite ja massiivid on vaid suunanäitajaks. Nii sisuliselt kui David oli comparing-- on see OK, kui ma kustutan kõik selle? Nii loeng kui David oli ema võrdub võrdub ema, meile, mis tundub olevat sama asi. Õigus? Kuid arvuti all kapuuts, mis tegelikult toimub on see, et see string, kõik, mis on on massiiv. Mis ampersand-- või, vabandust, koos null terminaator lõpus. Õigus? Längkriipsu 0. Vale kurakriips. Nii et kõik need were-- kõik Nende kahe stringe were-- on massiivi suurus püksid koos tähed ema ja ema. Aga mida massiivid tõesti on vaid viiteid konkreetse koha mälu mis ütleb, et alustada oma valikut. Nii sel juhul, kõik see oli oli vaid mõned prügi väärtus, mingi suvaline pointer. Ja kõik see oli olnud mõne muu prügi väärtus. Ütleme nii, et 0x200. Ja nii kui püüad võrdne need kaks üksteisele nad false, sest addresses-- viiteid et nad were-- olid erinevad. Arvestades, et on teistsugune kui sa oled püüavad võrrelda tegelikku täisarvud. Nagu kui sa tahtsid compare-- Viimase example-- int punktist A punkti B, nad hindavad true, kui Elliot ütles sest nad olid täisarvud, mis on salvestatud ja sa hinnata vaid väärtusi. Siin, sest stringid on massiivid ja kõik massiivid on viiteid, Sellepärast nad ei ole üksteisega võrdsed. Nii mingi segane, et graafika. Aga olgem lihtsalt ette kujutada. Me oleme luua massiivi suurus 3 indeksiga 0 kuni 2-- 0, 1, 2 väärtustega 1 2 ja 3 säilitati neid. Kõik massiivi tõesti does-- siin, olgem lihtsalt öelda Ma koostan pointer Selle massiivi, mis on juurdepääsu väärtus Esimene indeks seda valikut. Nii et siin oleks 0. Õigus? Kas igaüks aru, kuidas et esimene rida hinnata? Hea. Ja kui sa tahad initsialiseerida täiendav väärtuste pärast seda, kõik me teeme on ümberjagamise. Nii 0, 1, 2, 1. Nii et see kursor, mis kunagi oli osutades siin, kõik me teeme liigub ta maha. Seda pluss 1 teeb. Ja siis saame panna 2 sinna. Kui me tahtsime panna 3 ühes pärast, me ei kustuta see pointer, pane 3 sinna. Kas see teeb mõttes kõik? Jah. Kas teil on küsimus? Sihtrühm: See on [kuuldamatu] on küsimus, ma ütlen seda ikkagi. Ma ei arva, et see on tegelikult Küsimus Aga-- inglise, massiiv võrdub 1 mõttekas. Oleme nagu, OK, esimene asi. Aga asjad on 0 indeks [Kuuldamatu] massiivi võrdub 0 näidata esimest kohapeal. ANDI PENG: Jah. Nii tegelikult, mida ma teen siin Ma ei tutvumise esimene indeks. Kõik Olin doing-- nii esiteks, öelge mulle, mida ei star massiivi teha? Mida teeb star enne osuti teha? Sihtrühm: See näitab osuti. Et sa oled kuulutab pointer. See de-- ANDI PENG: See dereferences mis tähendab, see läheb ja tegelikult saab väärtus. Õigus? Nii et kui sa tahad saada väärtus siin ja määrata, et kuni 1. Jah? Nii et ma ei actually-- ma ei tõesti hoolivad indeks seda, kõik teen lihtsalt iterating alla liikudes oma kursorit mööda massiivi. Ja siis lõpuks ma lõpetama, eks? Ja nii, et ma saan on siis, kui ma tabanud puhul string, null terminaator. Ma tean, oh, kui ma tabanud back-- kui ma näen kurakriips 0, ma tean, ma olen teinud seda ja ma tean, et ma ei saa lihtsalt lõpetage iterating läbi. Tõesti hea küsimus. Ja me tõesti minna kaugemale süvitsi seda järgmisel nädalal sest tükk, mis läheb kaasata palju kasutust suunanäitajaks. Aga tean, et just nüüd, see on lihtsalt erinev more-- see on lihtsalt teistmoodi eest Arvuti kirjutada sisuliselt mida me oleme teinud. Nagu David ütles Loeng, kuidas me juurdepääsu massiivi on lihtsalt tehes massiivi 0, sulg 0, kui me lihtsalt tahtis pääseda esimene väärtus. Kõik arvuti teeb pöördub et sinna ja iterating ise. Nii me nimetame seda süntaktilise suhkur, mis on lihtsalt fancy viis öelda kasutajasõbralik viisid meid teadmine, kuidas programmi. Aga arvuti all, mida ta teeb, see on tegelikult lihtsalt võttes osuti, mis on reguleerida. Aga nii, et me kirjutame seda, sest see on lihtsam meile mõelda asju nii kastid ja kuidas liikuda mööda kasti, on omades sulgudes. Vabandust, see oli tõesti, tõesti halvasti Aga-- yeah. Sihtrühm: Niisiis, kuidas oleks võrdlete kahte stringid et näha, kas nad on üksteisega võrdsed? ANDI PENG: Taavet kirjutas Selle programmi loengu nii et ma olen lihtsalt läheb minema üle kiiresti ja lühidalt. See, kuidas sa teeksid, et on see, et teil oleks tegelikult vaja minna ja võrrelda addresses-- või väärtused saadud viiteid. Seega pidage meeles, kuidas sa saada väärtus siin? Ma ei hooli aadress siia. Kuidas tegelikult saada väärtus iganes on siin? Sihtrühm: [kuuldamatu]. ANDI PENG: Täpselt. Nii et sa võrrelda star siin versus staar siin. Kas need võrdsed. Ja siis minna. Kas star siin star siin võrdsed? OKEI. Nad on võrdsed. Ja sa muudkui läheb alla kuni olete tabanud lõpuks nii. Ja kui need kõik on võrdsed, siis sa tead oma string on võrdsed. Ja C on tegelikult funktsiooni kirjutatakse nimega String Comp, mis tegelikult lihtsalt kas see sulle, et sa dont " pea kirjutama seda ise. Jah? Sihtrühm: Ma arvan, et loengu Kui me ei võrdlemiseks. Me tõesti ei vaja counter nagu pi, eks? ANDI PENG: Sa ei sest me tõesti ei hooli Mitu kasti oleme kordasid läbi. Kõik me hoolime, et me ei kavatse Jätkab, kuni ma tean, et peatada. Ja sa tead, et lõpetada, kui seal on mingi märk et sa oled null terminaator. Jah. So-- Sihtrühm: [kuuldamatu]. ANDI PENG: Jah. Nii puhul võrreldakse stringid, ma tõesti ei huvita, kui palju tähti are-- pean võrrelda kui nad on õige või vale, kui nad üksteisega võrdsed. Mind ei huvita, kui palju tähti on igaüks neist, eks? Ma lihtsalt huvita, et see paarilised sellega ning teiselt pärast tikud ja üks pärast sobib kõik viis kuni lõpuni. Õigus? Kas see on mõtet? Nii et ma tõesti ei hooli, kui palju tähti, Ma lihtsalt huvita, et kõik kirjad mängu. Jah. OKEI. Kas ma liiguks sellest? Hea. Meil hakkab veidi lühike aega, et ma lähen lihtsalt võimaldab teil poisid korraks vaadata seda. Käivita see oma ID, kui Te olete uudishimulik. Ja kutid saavad näha, mida see saab välja trükkida. OKEI. Nii et kui miski me ka katsuda kohta natuke on idee pointer aritmeetika. Milline, kes kõik on, on asemel kohandava väärtused mis on salvestatud selle aadressil kursor, see on lihtsalt tegelikult muutmata Tegelikult aadress. Nii et kui sa nii inimese tahtnud kohandada oma kursorit käsitsi kuidas sa teeksid, mis on lihtsalt teha n korda suurem kursorit. Õigus? Nii int. Int-- mitu baiti mälu on int? See on neli, eks? Nii et kui ma tean, mul on massiivi kõik ints ja ma tahan seda rõhutada, et üks hiljem, ma tean, et ma lihtsalt pean liikuda minu pointer alla nelja baiti, eks? Ja nii n korda suurem osuti baiti on aga palju baite sa oled lihtsalt Liigutatav kursor järgi. Nii näiteks, kui meil on hulgaliselt ints, esimene, ütleme lihtsalt, salvestatakse 0x00. Tead kõrval üks läheb kell 0x04 sest see on neli baiti hiljem. Ja üks pärast seda läheb olla 0x08 ja nii edasi ja nii edasi. Ja nii, poisid, vaadake. Kõik, mida sa teed siin et teil on pointer y ja sa lisades, et teie mälu, nii et saate liikuda alla plokid mälu eraldatud. Kind of kõrgem mõiste. Te ei pea teada sel nädalal, kuid see on kõik see teeb seal. OKEI. Teine nali aega. Kaks stringid kõndida baar. Üks ütleb, Sooviksin rummi ja Coke prügi väärtusi. Teine ütleb, pead vabandama mu sõber, ta ei ole null lõpetatakse. Te saate seda. Vabandust. See on, kuidas ma saan ennast läheb kui ma prep osa on mul lisada paar nalja slaidid. Niikuinii. OKEI. Enne kui ma liikuda nüüd-- nii sisuliselt oleme kaetud kõik kontseptuaalne seotud küsimusi suunanäitajaks. Ja siis me läheme talk-- liikuv rohkem rääkida, miks see on oluline ja kuidas see sobitub Idee mälu haldamine. Aga enne kui ma liikuda, kas keegi on küsimused umbes viit kasutamist, mis toimub kohta, kui loote suunanäitajaks, Kuidas on viitamine iga teised, kuidas neid dereferencing? Kõik küsimused et enne kui ma liikuda? OKEI. Hea. Nii et see toob meid selle suurem kõrgema mõiste mälu juhtimine tervikuna. Niisiis, sisuliselt on arvuti, seal on kaks peamist tüüpi mälu või piirkonnad, kus mälu on salvestatud. Sul on siin see, mida nimetatakse hunnik ja teil on siin mida nimetatakse virna. Ja me ei kavatse rääkida virna esimene, sest see on rohkem finagley üks, mida on selline kontseptuaalselt aru, mis toimub. Nii et kõik virna on-- mõelda seda kui füüsilist virna mälu kus teil on ploki mälu mis on kõrvale oma programmi samas see töötab. Ja see on koht, kus sisuliselt kõik oma kohalikud muutujad hoitakse. Nii et see on lihtsalt suurendatud pildil selle virna. Pinu seal, ma olen lihtsalt suum natuke rohkem. Niisiis, sisuliselt virna teil on kamp funktsioon oma programmi. Nii Lähme tagasi kuni nädal kaks näiteks kus meil oli meie peamine ülesanne samuti kuupi funktsiooni kus püüdsime luua funktsioon, mis cubed-- et võttis parameetrid sisendiks kuubis, neid ja tagasi neid tagasi pealehele. Nii nii, et see on salvestatud mälu on see, et teil on oma põhifunktsiooni siin allosas. Ja siis iga uue funktsiooni et helistate ja lisada peale selle, mälu lihtsalt korstnad peal. Mõtle seda füüsilist pinu. Ja siis on kõik teie peamine muutujad oma põhiülesande kõik, mis siin toimub, salvestatud. Ja siis, kui te helistasite kuubik, see läheb ja seda loob koopiad kõigist neist parameetrite ja salvestab need Eespool teises kohas. Ja miks me hoolime? Põhjus me hoolime, et me ei saa lihtsalt kasuta parameetrid siin-- muutujad siin-- ja me muudame neid, ootame neid ka muuta siin, eks? Idee on selles, et nad salvestatud erinevates kohtades mälu nii et kui sa oled juurdepääsu erinevatele funktsioone, mida sa arvad juhtub tegelikult ei juhtu, kuna mälu bitti ei ole omavahel seotud. Ja nii on küsimus, mis on tõesti oluline, et me sellist mõista on, mis siis, kui meil hakkab Programmi suuruse funktsioonina Kestab FRAME_BITS nii füüsiliselt, kuidas palju mälu on meil sellele anda? Võibolla on see hiiglane funktsiooni, et me on anda see, et palju mälu. Aga kui ta oli väiksem suudaksime vaja on väike natuke. Nii et idee on see, et kui meil hakkab Programmi suurus, mis funktsiooni sõltub kui palju muutujate ja tüübist muutujad et me tahame anda talle. Aga mis siis, kui arvu variables-- ja nende suurused, mis on määratud mitte mida sa kooder kuid määratakse tegelik kasutaja oma programmi. Nii et kui ma tahtsin luua funktsiooni mis võttis stringid kasutaja, aga ma ei tea tegelikult, kuidas suured need stringid on, see on minu jaoks raske jaotada konkreetsetele mälumahu vaja. Õigus? Sest kui see funktsioon-- kui Selle kasutaja sisestab hiiglane string, see saab luua viga mida nimetatakse sisuliselt Kestab ülevoolu kuhu minna kaugemale piire mälu, mis sul on. Ja nii siis mida me teeme? Kui me ei saa lihtsalt luua see hiiglane Kestab mis võib päästa kõik, Mida me siis teeme seda probleemi lahendada? Nii et me ei kavatse minna ja rääkida selle teist tüüpi mälu ja siis saame rääkida, kuidas saame kasutada kahte koos lahendada see küsimus. Nüüd me ei kavatse liikuda teise osa mälu meie arvuti. Seda nimetatakse hunnik. Nii et kõik kivikangur on bassein vaba mälu, et võib eraldada dünaamiliselt. Nii, mis võivad muuta samas Teie programm töötab. Ja nii piirkonna Kasutamata mälu, mida saab olla allowed--, mis võib olla eraldatud funktsiooniga nimetatakse malloc või mälu eraldamise. Nii sisuliselt kui näed programm, saab dünaamiliselt luua mälu hunnik ja kasutada, et kõik siin. Ja nii siis kõik oma funktsioonid Siin pääseb hunnik. Ja nii malloc see idee, et David Selline kiiresti korraks ilustatud loengus, on vaid viis teil kontrollida oma mälu. Like, kui sa lihtsalt luua Kestab funktsioone, kui sa oled lihtsalt millel on oma põhifunktsiooni Teie juhuslik ülesandeid, sa arvad neid lapsi, et lihtsalt jooksis minema, kui oli teinud, olles nendega. Nad olid tõesti halb lastele. Loote neid, siis õpetada neile midagi, ja siis, kui soovite juurdepääs neile jälle nad ei ole seal, sest teie mälu lihtsalt jooksis minema. Aga malloc või hunnik, on võimalus võttes parem lastele, kus saab omamoodi luua neid, määrab need väärtused, kasuta them-- mis kõlas tõesti bad-- neid kasutada aga sa tahtsid, aga siis oleks võimalik kontrollida neid ja siis vabastada mälu kui neid vajate. Niisiis, kui sa oled teinud oma funktsioon, lapsed tulevad sulle tagasi ja sul on veel, et andmed on olemas. Nii nii, et me malloc või luua, Mälu on selle funktsiooni järgi tühine star malloc suurus baitides. Nii et on lihtsalt prototüüp miks me seda teeme. Nii näiteks on meil luua pointer ning kirjuta int-- int star pointer-- võrdsete malloc suurus int. Nii et põhjus, miks me seda teeme suurus ja mitte ainult number-- sest me kõik teame, et int on neli baiti, right-- kuid int on ainult neli baiti teatud operatsioonisüsteemid. Idee meid programmeerijad on see, et me soovid luua koodi, mida saab käivitada kõigis arvutites, mitte ainult Meie lihtne arvutid. Ja nii see on, miks me tahame kasutada suurus, mitte ainult number neli. Kas see mõtet kõigile? Nii suurus of-- kõik see on C funktsiooni või operaatori et näitab, mitu baiti mälu ei teatud tüüpi muutuja asuda. Nii sel juhul suurust int on neli. Neli baiti. Ja malloc läheb tasuta kuni nelja baiti oma hunnik, siis sa võid oma peamise funktsiooni suudab salvestada mällu. Kas kõik selge, et nii palju? Jah? Sihtrühm: Ma olen selge, kuid lihtsalt olla üle selged-- ANDI PENG: OK. Täiesti korras. Sihtrühm: --size kohta on [kuuldamatu] saab tegelikult [kuuldamatu] ja see tegelikult teha asi, mida me tahame seda. See ei ole mingi pseudokoodi. ANDI PENG: Ei Sihtrühm: See on nagu tõeline asi-- ANDI PENG: See on tõeline koodi. Sihtrühm: --Meil seda kasutada. See on tegelik. Cool. ANDI PENG: Suurus kaasas C. Sihtrühm: See teeb mu elu õnnelikumaks. ANDI PENG: Jah. Nii et kui sa oled laisk programmeerija nagu ma mingi olen mõnikord, Mulle ei meeldi meeldejätmist Mis suurus int on, ma ei meeldi meeldejätmist suurusest ujuk on. Suurus lihtsalt ütleb teile, mida see on ja see on palju lihtsam. Hästi. Nii tähtis asi et kutid kõik tahavad meeles pidada, kui sa oled kasutades malloc on see, et teil on alati on vaadata, kui see on null. Nii nagu ma ütlesin, tagasi et pildi hunnik. Hunnik on lihtsalt see hiiglane virna mälu, et sul on. Ja sa tahad olla võimeline võtma tükkideks Mälu on seda ja kasuta seda, eks? Aga mis siis, kui sul pole rohkem mälu, et hunnik? Mis siis, kui ma olen juba harjunud kõik seda ja püüan malloc rohkem? See ei ole olemas. Noh, see on, miks sa oled hakka viga. Sa lähed SEG süü. Sa lähed olema killustatust süü, kui sa pääsemast asju, mida pole olemas. Ja nii, kuidas me teeme mis ja kuidas me vältida, et see, et me kontrollime näha, kui kursor on null. Nii et kui ma oleks malloc midagi ja mul polnud rohkem mälu, et oleks printida viga, sest pointer tagastatakse Teile on lihtsalt null. Ja nii, kuidas me teeme see-- see on lihtsalt suurepärane disain, lihtsalt pähe see-- on, et mis tahes kord, kui proovite malloc midagi, sa lähed vaja kontrollige, kas see on null. Sest iga kord, kui sa püüad saada mälu hunnik, sul on alati teha Veenduge, et teil on mälu. See on kõik see. Nii päris palju neid kolme rida koodi, meelde jätta. Iga kord, kui malloc, sulpsti neid. Sa lähed neid vaja. Sest ma garanteerin teile, me ei kavatse su proovile iga juhtumi ja arvuti läheb plahvatada, sest sa oled üritagi juurdepääsu mälu, mis on ei ole seal ja asjad hakkavad crash ja ta ei kavatse olla hea. Nii lihtsalt puurida, et ajju. Malloc, null. Väga hea. Hästi. Siis see sünnitab küsimus, mis juhtub pärast me teha kasutades, et mälu. Kuna kogu idee võttes malloc oli et meil on see kivikangur, et me saame võtta mälu ja siis saame seda kasutada. Õigus? Ja siis me peame meeles pidama, on, et pärast me teha seda, siis saame vaba ta. Lase sel minna. Me ei lase tal minna. Või muidu sa oled ka läheb lekkima mälu ja rohkem halbu asju juhtub. Sisuliselt, kui Sa puudutad mälu halbu asju juhtub, kui sa ei tee asju õigesti. Nii et teil on vaadata, esiteks, Kui teil on vaba mälu. Ja siis kui sa oled teinud, sa tahad tasuta seda ja lase oma operatsioonisüsteemi võtta see tagasi. Nii, kuidas me seda teha on lihtsalt, et Funktsiooni void tasuta ja pointer sellele hunnik mälu. Nii näiteks on tasuta pointer. See on üsna lihtne, lihtne, ei taha seda unustada. Nii et vaadata, et näha, kas see on null, tasuta. Igaüks hea? Nii et taas, kood, mis te poisid võib selline kiiresti pilk. Ma tean, et see on palju uusi süntaks ja see kõik on õige, kui sa oled nagu, ah, Mida see tähendab jälle? Ära muretse. Kõik see pidi olema on väljapanek hagi, kuidas kõik need asjad saab kasutada koos. Nii et on kokku pandud nagu kamp varem slaidid me lihtsalt läks läbi ühte programmi. Sihtrühm: Mõnes mõttes et saame actually-- ANDI PENG: nii, et me saame tegelikult kasutada. Sa võid sulpsti, et oma ID, saate käivitada see ja see töötab. Sihtrühm: OK. Nii et see on reaalne? ANDI PENG: See on reaalne. Jah. Püüan teha seda nii, et fondid on erinevad nii et kui ma tüüpi reaalne kood font on kirjas kood ja et minu märkus kood on erinev, kuid Ma ei tea, kas see tegelikult toimib. Sihtrühm: Ei Ma arvan, et-- ANDI PENG: OK. Sihtrühm: --sometimes [Kuuldamatu] ja ma olen nagu, et oleks tõesti armas kui see oli tegelikult kasutatav asi aga siis see ei ole kasutatav asi. Mulle meeldib, et see on kasutatav asi. ANDI PENG: OK. Jah. Ma sealtkaudu mööda. Ole nagu, David, lapsed on tõesti kurb, kui sa kirjutad võlts koodi. Hästi. Jah? Sihtrühm: Nii PTR siin ei ole tegelikult osuti, see on ploki mälu? ANDI PENG: Nii sa räägid esimene rida või üks siin? Kas te räägite see siin? Sihtrühm: PTR on erinevaid asju in-- ANDI PENG: Noh, nii siin mida ma doing-- tegelikult, Lähme siit läbi. Selline sidemed kenasti kõik mõisted. Nii et siin on meil int star PTR. Nii int pointer, see on kui me tegelikult luua osuti, mis viitab täisarvu. Noh, see läheb viitavad täisarv. Ja me ei kavatse malloc või annab see, piisavalt mälu eraldatud salvestada täisarv. Nii neli baiti sel juhul. Ja siis, kui see võrdub null-- võrdsete võrdub null-- läheme printida. Oh, sul on viga, kuna sa oled välja mälu, eks? Vastasel tagasi üks, et lihtsalt ütleb oma programmi mis sul viga. Ja siis, kui te seda teete on, et mälu on see läheb salvestada mida iganes saada int annab sind asukoha ja määrake see väärtus kursorit. Nii see tegelikult läheb kustuta see väärtus ja panna mida iganes saada int tulu. Ja siis sa lähed print iganes nad sisenesid. Sihtrühm: Ja see on saab olema hunnik? ANDI PENG: See läheb olema hunnik. Sihtrühm: Ja nii, et on kättesaadav. ANDI PENG: Täpselt. Nice. Väga hea. Sihtrühm: Nii et kui me vabastada PTR selles viimane samm, me vabastades pointer või me vabastades blokeerida? ANDI PENG: Jah. Nii et me vabastades pointer-- noh, vabastades mäluploki. Nii et ainus viis, kuidas saame isegi juurdepääsu Mälu on lastes kursorit. Kui sul ei ole kursorit, sa oled nagu, oh, ma ei tea, kus ta on, õige? Nii et kui teil vabastada see, et sa oled sisuliselt vabastades et kogu ploki. Siis arvuti teab, oh, miski kasutatav siin Ma lihtsalt panna prügi väärtuste tagasi uuesti. Sihtrühm: Nii täisarvud olemas on? ANDI PENG: Kas täisarvud on olemas? Vabandust. Kas te sõnastada oma küsimusele? Sihtrühm: ma mõtlesin, kui oled vaba pointer, täisarv, et sa saad, on see ikka olemas? ANDI PENG: Ei, see ei ole. Või vähemalt see saab olemas oma mälu enne arvuti teeb mida iganes sellega, kuid seal on kuidagi teil saada seda. Sest sa vabanenud kursorit. Sa ei tea, kus see on enam. Jah. Ma lähen edasi liikuda siin. Phew. Nii et me oleme läbi palju kontseptuaalset raskused mälu haldamine ja me lihtsalt läheb sisuliselt kulutada 5, 10 minuti läheb üle süntaks asju, on kasutatav ja kasulik kutid, kuid midagi liiga kontseptuaalselt seal. OKEI. Nii et me täiesti käikude vahetamist siin. Mälu haldamine, raske. Lähtekohad, raske. Jah. See on tõesti väga raske. Täiesti korras. Sellepärast teie tükk on saab olema väga raske. Aga kui sa lähed ja teha asju, mida me oleme peaks tegema, et Kindlasti asjad on null, veenduge, et kontrollida, kas asjad on null, siis veenduge, et vaba mälu, veenduge, asjad ei ole lekib, siis saad hea. Sa seatakse. Hästi. Nii et me läheme liikuda sellesse Täiesti uus kontseptsioon ümbersuunamine. Ja nii enne nüüd on Peamine viis, et me oleme on suheldes meie programmid on läbi standard input ja standard väljundi. Õigus? Meil on kasutaja sisend asju ja arvuti sülitab selle meile tagasi terminali. Kuid on ka teisi viisid meid suhelda arvuti meie programme, mis ei ole just me füüsiliselt kirjutades asju aastal, kui ma küsitakse. Ja kuidas me teeme, mis on läbi suurem kui porgand ja toru sümbol. Nii saame ka lugeda ja kirjutada faile, mis. Nii, kuidas me seda on suurem kui porgand, kõik, mis teeb kirjutab sõltumata oma failil on eraldi faili. Nii näiteks, kui ma tahtsin joosta hello world ja ma tahtsin väljund salvestatakse teise faili ja mitte ainult välja printida mulle, ma võid teha suurem porgand, OUTPUT.TXT. Nii et kõik, mis teeb võtab minu hello.world programmi ja mis iganes väljund, see on salvestamisel faili nimega OUTPUT.TXT. Nii nii, et David tegi Csv nimed õpilaste, see on sama, mis kutid saavad seda teha. Ja mis on eriti kasulik on siin suurem than-- kaks suurem kui porgand märke, mida saate lisada väljundit faili, mis tähendab, et sa võid lisada selle peale. Sa võid hoida lisades OUTPUT.TXT iga täiendava asi mis sa teed. Või kui hakkate sattumist rohkem komplitseeritud programmide kahe suurema kui porgand, et lihtsalt trükib välja veateateid. Nii et teil on hiiglane summa veateated ja sa tahad, et lugeda läbi kõik need ja sa ei tahtnud, et kerida läbi oma terminal, tegelikult võite lihtsalt teha suurem kui OUTPUT.TXT ja see läheb säästa kõik oma vead nimelisse faili OUTPUT.TXT et saab läbida ja lugeda. Sihtrühm: Kus on tekstifaili salvestatud? ANDI PENG: See salvestatakse samasse kataloog, et teie programm on. Nii et sa lihtsalt minna tagasi ja vaadata seda. Ja sama asi saab teha panus on et me saame tegelikult teha sisu mõne faili Ja me saame sisend, et meie programm. Nii selle asemel, et teha käsuga argumente, kus sa füüsiliselt tuleb kirjutada asju iga kord, sa võib tegelikult lihtsalt fail nimega INPUT.TXT et lihtsalt paneb see kõik. Ja siis toru on spetsiaalselt lahe, sest see võib võtta toodang ühe programmi ja kasutada seda kui sisend teise programmi. Nii näiteks oma poisid "Vigenere, on see rida koodi, mis sa poisid töötavad, et sa võibolla ehk ei tea, mis see oli doing-- Selle ./generate 1000 toru ./42. Õigus? Nii et kõik, mis teeb, kui me lihtsalt vaatleme seda samm-sammult, ./generate, mis tähendab, et ma olen töötab minu programmi luua. See võtab 1000 oma panus. Nii et ma tahan luua 1000 juhuslikult numbrid ja ma toru selle-- või ma lähen kasutada selle-- väljund sisendina oma programmi nimega leid. Ja ma lähen, et proovida leida 42 välja numbrid tekkimise perioodist 1000 numbrid. Kas see koodirida teeb mõttes, et kõik teisedki? Nii et sel viisil me säästa ise ton samme. Me ei pea tegema luua, salvestada faili ja siis pane see leid. Me lihtsalt teeme seda kõik ühele joonele. Mida iganes genereerida väljastamist, sulpsti see kohe tagasi leida. Jah? Sihtrühm: Ja nii käsu argumente, on selle-- see on kolm käsurea argumente? See on tekitada, find-- ole, four-- tekitada, 1000, leida ja 42? Või on the-- ANDI PENG: Nii toru ei ole tegelikult loe käsurea argument sest kompilaatori või terminal teab, et toru, oh, ma tean, et ma pean vaatama enne toru, sest see on mu väljund ja pean hoolitsema toru, sest see on minu panus. Nii ta teab selle-- ./generate ja 1000, Neil on kaks käsk siis argumendid lihtsalt esimese programmi. Ja siis ./find 42 on kaks käsku line argumendid teist programmi. Jah. Igaüks hea on? Nii lihtsalt reaalne kiire, mida teha Nende kolme rida koodi teha? Üsna lihtne. Igaüks taha mulle mida esimesel real teeb? Sihtrühm: [kuuldamatu]. ANDI PENG: Mõtle seda Lihtsalt-- mida see suurem porgand teha? Sihtrühm: See paneb midagi ka järgmisel real. ANDI PENG: Mis on vastand on? Sihtrühm: See paneb järgmise asi esimesse asi. ANDI PENG: Jah. Nii et kõik, mis teeb on sul programmi käivitamist .hello-- näed programm nimega tere. Sa lähed, et see sisendiks nimetatakse INPUT.TXT. Õigus? Sest ma arvan et kui lihtsalt füüsiliselt laskumist tere. Ja siis sa lähed päästa väljund faili nimega OUTPUT.TXT. Kuidas teine ​​rida? Tahad mulle öelda, mida Teisel real teeb? Sihtrühm: [kuuldamatu]. ANDI PENG: Vabandust. Ütle, et uuesti. Elliot. Sihtrühm: Nii et see paneb nimekiri numbrid leida. ANDI PENG: Jah. Nii leiavad, mäletate, Selleks, et kasutada sind leida vaja teada, kust te otsite. Ja nii kõik, mis ta teeb siin on, et see annab teile eelnevalt mis kannavad komplekt numbrid, siis leiavad läheb otsida neid, mille arv 42. Ja siis 15. Pea meeles, et te poisid jooksid seda kui sa testinud oma koodi. Nüüd sa aru, mida ta teeb? Sihtrühm: See on kasutusele komplekti juhiseid to [kuuldamatu] läbi kolme poolt Kolme saada the-- võita mäng. ANDI PENG: Jah. Sihtrühm: See sisestab need juhised programmi. ANDI PENG: Päris palju. Nii tilde CS50. / Pset3 / 3x3, kõik, mis tegin oli see, et oleme loonud teksti fail, mis olid kõik pealkirjad valmis kutid. Ja nii oma mängu mängida, sa lihtsalt-- me lihtsalt panna, et oma programmi. Nii olime loonud selle pardal ja seejärel me panna, et juhatus oma programmi mis jooksis ta ja lõi plaatide kolme kolmekordselt. See on kõik, mis ta teeb. Ja nii oli tegelikult magic toimub kulisside taga et kutid ei programm, mis me programmeeritud. Aga nüüd te poisid aru, miks me tegime seda nii, et see kõik hea. Hästi. Niisiis, kui ümbersuunamine on väga kasulik, C on üldine mehhanism lugemine ja kirjutamine failid oma. Midagi sisuliselt raske siin, et ma olen lihtsalt läheb minema läbi tõesti, tõesti kiire. Kõik see on on mõned memorization ning tagada, kutid on süntaktiliselt kasutades seda õigesti. Nii, et me tahaks seda teha on luua viide faili me tahaks avada faili ja siis me teeks kõiki lugemine ja kirjutamine ja sulgege fail. Kui asi kutid tahad meeles pidada, et kui seda teed, sest me sulgemise ja failide avamisel, Kõigil neil käsud kuuluvad on standard-- standard I / O raamatukogu. Seega veenduge, et iga kord, kui sa oled Seejuures et olete included-- # included-- standard I / O dot h. Nii päris kiiresti. Esimene samm, mida soovite luua viide, et fail. Ja nüüd, et me oleme teinud vihjeid, siis poisid ei ütle mulle, mida see koodirida teeb. Õigus? Kõik, mis ta teeb on luua pointer nimega faili tüüpi faili. Sest sa tead, et see läheb punkti fail ja sa oled läheb faili avada. Siis sa oled f open-- kõik see on faili avada. See on faili nimi. Ja seal on kolm asja, mida saate teha. Te saate lugeda, kirjutada või lisada. Enamik üldiselt, kutid saab lugeda või kirjutada sest sa oled nii saab olema sisestanud faili või väljastamiseks, üks. Nii päris palju r ja w on kaks asjad, mida sa lähed tuleb kasutada kõige. Nii et kui kõik, mida ma olen teinud on luua kursori faili nimega fail. Ma avamist ja ma olen reading-- ma olen avada seda faili nimega file.txt ja ma loen seda. See on kõik, mida ma teen selles punktis. Ja siis need on vaid toimib mida saate lugeda erinevaid asju või kirjutada erinevaid asju või jätke erinevates kohtades kus sa tahad otsida. Kõik need on online. Kõik need saab lihtsalt Google. Pole vaja meelde jätta neid. Nad on lihtsalt olemas, ühekordselt teie jaoks Kui soovid saaks neid kasutada. Nii et kui ma tahtsin just lugesin ühes täht korraga, Ma teeksin faili fgetc. Või kui ma tahtsin lugeda rida teksti korraga, ma teeksin fgets. Ja nii edasi ja nii edasi. Kõik need lihtsalt teha erinevaid asju, mida poisid võivad kasutada. Ja siis lõpuks, pärast seda kui ma olen done lugemise või kirjutamise, Ma lihtsalt lähen kirjutamisel, et fail. Ja pidage meeles, see on üks need, mäletan, siis Selleks, muidu teie faili ei hakka tööle. Alati avatud fail enne lugemist või lugemine, sa pead alati sulgeda, kui sa seda avada. Sama asi mäluga, eks? Sa pead alati mälu ja tasuta seda. Siin on alati avatud esitada, enne kui proovite seda lugeda ja sa alati sulgeda pärast seda avada. Nii et see on ka online. Ma lähen väljakutse teile poisid Selline kirjutada programm, mis trükib hello.world faili. See on tõesti lihtne. Sisuliselt lihtsalt kaasneb paar rida koodi mis kirjutati lihtsalt varem. Sa lähed panna neid kokku ja kirjutada seda. Nii mõned olulised asjad, mida meeles pidada samas kutid üritavad kasutada seda. Kui see on kõik väga kasulikud Teie pset sel nädalal on see, et fopen loob faili viitaja. See ei ole tegelikult füüsilises faili. Kõik see viitab, et fail, mida soovite avada. Ja sa oled sisuliselt alati te kasutate mõnda muud funktsioonid nagu fread või fwrite või fgetc või fgets, on et sa oled lihtsalt kulgeb ümber selle kursor kõik need funktsioonid. Nii et te tegelikult ei võtmist, et esitada ja kasutada seda oma funktsioone, võtad sa kursorit ja panna see neid funktsioone nii, et saate kasutada. Ja kui te unustate sulgeda fail pärast sa seda kasutada, Teie programm läheb lekkida mälu. Sisuliselt kõik, et vahendid on see, et halbu asju juhtub ja teie programm ei tööta korralikult. Ja nii edasi pset sisse Alguses ma arvan seal on lühike kus ta explained-- Nate explained-- mida Valgrindi oli. Kõik Valgrind on viis, kuidas saate veenduge, sa ei leki mälu. Nii kutid tahavad teha et te vaatate, et lühike sest see selgitab seda väga hästi, mis juhtub. OKEI. Nii et ma läksin läbi, et tõesti, tõesti kiiresti, sest ma tõesti soovite saada räägime pset enne kui poisid minema. Kas kellelgi on küsimusi kontseptuaalselt? Enamasti on see kõik lihtsalt süntaksit saate lugeda või kirjutada faili. Lõpuks, igaühe lemmik. Me läheme rääkida pset nüüd. Nii, käe, kui palju kutid lugeda spec sel nädalal? Oh, see on pool. See on hea. Nii et see on tegelikult väga, tõesti tore pset selles mõttes, et end hästi tunda detektiiv, sest sa oled teeme kõik need lahedaid asju et sa ei teadnud, et sa võiksid teha kuid nüüd on see väga lahe mida saate teha neid. Ja see on tegelikult palju lihtsam kui mehed arvavad. Nii põhi pooleks see programm on sul läheb laadida lähtekoodi või jaotus koodi kirjutatud meie poolt. Ja sa lähed on üks kaust nimetatakse BMP ja teise kausta nimetatakse JPG. Jooksul oma BMP, sa oled läheb on kolm programmi. Üks neist on juba kirjutatud teile. Nii copy.c on programm me oleme juba kirjutanud eest, et sa lähed alla laadida. Kõik, mis teeb, on võtta sisestada pildil ja teeb selle koopia väljastab. See on kõik, mis fail on teinud. Aga mida sa tahad teha whodunit-- nii kui paljud teist poisid mäleta viienda klassi või maybe-- sa younger-- äkki kolmandas klassis, kui poisid olid saladus sõnumeid ja siis tuli panna paberile üle dekodeerida teate? Jah? Nii et kõik me teeme välja arvatud see aeg arvuti. Nii et me oleme teile see armas pilt. Ei tundu midagi, kuid alla see on vihje, et see saab aidata teil vastates küsimusele, palume. Sisuliselt, mida soovite tegema, on sisestada, et esitada, näpistama Mõned asjad, võibolla kohandada värve, vahetustega asju, nii et mida iganes sõnum on võib tulla läbi. Nii sees on peidetud pikslit ja info et kui sa kirjutad oma koodi õigesti läheb lahti mõtestama ja öelda mida see aimugi on. Ja nii mõningaid kasulikke näpunäiteid, kuidas soovite minna lähenemas. Sa tõesti tahad, et tutvustada ennast faili I / O sest me oleme lugemine faile ja failide kirjutamiseks. Õigus? Ja nii iga kord, kui me teeme et mis hõlmab faili I / O. Sa lähed end kurssi koos, kuidas sa avada pilte faile? Kuidas kirjutada faile pilte? Kuidas teha kõiki neid asju? See saab olema väga kasulik. Teiseks, kuidas läheb ilmselt võimeline muutma värvid, et koristama pildil? See on ilmselt läheb kaasata kohandada oma pikslit või teie RGB väärtused kuskil seal sisuliselt. Ei ole õige tee lahendada see nii kaua kui can-- nii kaua kui võimalik selline kohandada need pikslid muuta see nägema midagi, et sa hoolid. Ongi kõik me hoolime ka. Nii et palju võimalusi seda teha. Lihtsalt mängida seda kuni sa saad midagi, mis töötab. Ja siis oleks tõesti üllatunud, kui paar rida koodi sa pead tegelikult seda teha. Ma räägin nagu kolm rida koodi kokku et teil on vaja kirjutada et seda teha. Nii et kui sa leiad end kirjalikult 40, 30 rida koodi, oled ilmselt teed seda valesti. Kõik, mida pead tegema, on tüüpi mängida värvid ja kuidas see toimib läbi. Siis me pea natuke raskemaks probleem. Siin on meil suurust kus kutsume teid mina-- anname sulle sisendina pildi ja teie saneerimist See pilt millekski suurem või midagi väiksemate sõltuvalt mõõtmed anname. Seega pidage meeles loengus et David kiiresti vaatas üle, kuidas info tuvastab arvutis tähendab, et see on faili tüüp. Nii Wordi faili on eriline tegelased ees, et Teie süsteem on Wordi faili. Sama asi JPEG. Sel juhul me läheme teile JPEG faili. Kõik me teame, on see, et JPEG fail on pilt, eks? Aga arvuti eristab see väga spetsiifilisel moel. Nii alguses mis tahes JPEG fail, sa oled läheb on see, mida nimetatakse bitmap info päise kaudu ja bitmap faili päis. Kõik need on on erinevaid tükke andmeid et öelda oma arvuti, hei, kuulake, et JPEG tulemas ja need on mõõtmed või omadused, mis JPEG. Nii kutid tõesti tahad teada millist teavet ladestunud nende pealkirjad ja Mis on suurus neid. Sest kui sa kasutad läbi oma programmi, sa lähed tahan Otse üle selle summa. Õigus? Sest sa ei hooli muutmise kohta päise kaudu, sa hoolid muutmise, mis on pärast. Õigus? Seega veenduge, et poisid teavad kui suur need asjad on. Teiseks, enne kui alustate püüab muuta pildi suurust, sa oled ilmselt läheb taha salvestamiseks mõõtmed originaal. Õigus? Sest kui ma ütlen teile, see pilt on 100 pikslit 100 pikslit, ja ma tahan, et sa see neli korda suurem, sa tead, et sa pead korrutab need mõõtmed neli. Siis sa tahad väljundfaili 400 400 pikslit, näiteks. Nii et see on tõesti kasulik kutid salvestamiseks mõõtmed originaal. Ja siis hiljem, pärast sa oled teinud saneerimist, võite kirjutada uue pealkirjad need uued mõõtmed pärast saneerimist. Ja nii, et sa füüsiliselt võib tekitada suure pikslit on see, et saab kirjutada Uue RGB-- mäletan, RGB, kõik, mis paistab, on punane, roheline, ja sinise-- pikslit out faili. Ja sa lähed tahan on erinevad summad, mida Me nimetame polster. Kõik polster on ruumid enne ja pärast pildid et öelda your-- sisuliselt seda, et rääkige oma pilt, kui suur see tuleks asumist. See on väga abstraktne palju kui sa ei ole lugenud pset spec, kuid see saab olema väga kasulik, kui sa oled tegelikult lugedes seda. Sa oled nagu, oh, jah, et on mõtet. Miks ma pean seda tegema? Kõlab loogiliselt. Lõpuks on see ilmselt üks masendav programmid kunagi lihtsalt sellepärast, et sa ei saa öelda, kas see töötab või mitte. Kõik selle programmi, taastuda, on tehes on see, kui sõita korralikult, see peaks suutma äkki taastuda 50 pilti, mis kaotati meie kõvakettale. Ja nii probleem selles programmis on see, et te ei saa tõesti testida sest kas sa tagasi neid või sa ei ole. Ja siis tüüpi lihtsalt on mängida seda, ja kui teie programm on tööta korralikult, saate äkki näen, et Sinu kataloog olete sai hiigelsuur summa pildid, mis on nüüd olemas. Niisiis, kuidas ma läheneks see probleem on, et me oleme annan teile, mida on nimetatakse card.raw faili. Sisuliselt see on lihtsalt rikutud faili kõik salvestatud pildid, mis sa lähed vaja taastuda. Nii et sa oled ilmselt läheb taha sisestada oma card.raw või avatud, Sinu card.raw fail ja sa lähed tahan manipuleerida seda suudab salvestada JPEG. Nii et ma hakkaks jälgides ja salvestades iga JPEG, kui seda leida. Sa ei kavatse eraldi kõik äkki lihtsalt luua kõik 50 JPEG. Sa lähed tahan hoida jälgida, kui palju sa avad. Ja siis tahad veenduge, kui sa oled kirjutamisel buffer-- kutid ei tea, mida ma räägin kui sa loed spec-- soovid veenduge, et te kasutate allkirjastamata char puhvri. Ja siis tahan küsida ise küsimus, kui palju baite on oma CF-- on kaardi faili? See, kui palju sa lähed tahavad lugeda oma puhvris. Sa lähed soovite veenduda Kahe align sest siis ei ole juhuslik mälu lekib. Sa tead täpselt, kui palju baiti mida vaja ja kui palju baiti, et sa tahad neid on. Ja siis lõpuks, sa tahad kasutada funktsiooni nimetatakse sprint-- s print f-- genereerida custom faili nimede iga uue JPEG et sa leiad. Nii nagu te luua ja leida JPEG oma kaardi, sa lähed tahan hoidke neid ja neile nime anda. Õigus? Ja nii sa lähed soovite kasutada seda funktsiooni luua nimed, mis saab salvestada kõik oma JPEG. Ja lõpuks, ärge unustage sulgeda Iga JPEG pärast sa oled teinud. Sest see, mis sa oled lähen tegema, on sul läheb ilmselt mingi loop mis itereerib läbi kõik oma JPEG. Sa lähed kirjutada JPEG ja ümber nimetada, kui sa seda leida. Aga pärast seda, kui oled valmis iga üksiku JPEG, sa pead sulgeda, siis võite alustada üle ja liikuda edasi järgmisele pildile. Ja nii midagi, mis on tõesti tore, et me tahame teha, sest see on selline imelik probleem seatud vaid ka kummaliselt vasta probleem set, on see, et kõik pildid me on teile, kui teil taastada korralikult, kõik pildid on pildid Sinu imeline õppejõud, nii Harvardi, kell siin-- ja siin Yale'i. Ja kui juhtub, et tagasi kõik need pildid ja selgitada välja töötajad kohal nende kaartide, ja võtta selfies koos meiega, kui te meid ümber campus, iga foto saadate meile, siis me teile GB Dropbox ruumi. Nii teeme matemaatikat siin. Kui seal on 50 pilti ja 50 õppejõudu, Kui juhtub, et leida kõik 50 Meie, see on 50 gigabaiti Dropbox, Põhimõtteliselt oleme me annab teile poisid. Nii mõned ekstra lisada stiimuleid kui te tegite mitte ainult hoolivad tagasi kaotatud pilte. Seal on ka mõned lisatud stiimulid. See on lõbus probleem komplekti. See on tõesti. See on selline masendav, kuid siis saab tõesti tore, kui sa mõistad, wow, see töötab ja nüüd ma on kõik need pildid et ma olen lihtsalt loonud ise. Iga küsimustele pset? Sest igaüks, kes on juba hakkas, kui teil on küsimusi, Ma tulen siia paar minutit pärast osa, kui sa tahad minuga rääkida. Hästi tehtud, poisid. Vabandust, ma teave dumpinguhinnaga kutid. Lähtekohad on tõesti raske ja masendav. Ja ma olen tõesti rõõmus, et kutid jäi mulle. Me räägime põhjalikumalt umbes järgmisel nädalal kui me alustada teed hash tabeleid ja rohkem funktsioone, et kaasata neid. Jah. Nii et kui kellelgi on küsimused, ma tulen ümber. Tänan, et tulid ja võtab rohkem kommi, sest seal on rohkem kommi. Cool.