>> [Teema muusika]
>> SPEAKER 1: Tere, kõigile.
Tere tulemast tagasi lõik.
Lovely päev out-- mis on põhjus, miks ma olen kindel on vaid neli teist siin
ja mitte meie tavaline pakk.
Ma olen haige sel nädalavahetusel.
Nii et mul ei ole Starbursti kutid.
Ja ma köhima kohutavalt kogu selle.
Nii lihtsalt kannavad minuga.
Ma lähen tõesti proovida ja saada läbi selle esimese,
aga enne on mul köha rünnak.
Aga lihtsalt olla lihtsalt mind vähe bit-- see on kõik, mida ma küsida.
>> Nii et meie tegevuskava today-- lihtsalt reminder-- oma viktoriin on järgmisel nädalal.
Ma ütlesin, et see viimane nädal nii, et see ei kuulnud off valve.
Nii et ma olen teile meelde uuesti.
Järgmisel nädalal oma viktoriini.
Selleks, järgmisel nädalal lõik on palju
of-- ma püüan ja töötada mõned läbi.
Nii et kui te poisid võiksid aidake mind välja saates mind
asjad, et sa oled mugav koos, et olete mures,
teemasid, mida sooviksite jaoks mulle katmiseks, et oleks tore.
Ma võin proovida ja teha neile meie jagu järgmisel nädalal
või saata teile lisamaterjali või prep et te ei pruugi saada mujal.
>> Yeah!
Üha rohkem inimesi on tulemas!
Ma arvasin, ma tegin, et halvasti viimase nädalal, et keegi ei taha tagasi tulla?
Ma kardan.
Nii teiste kolme asja et me läheme üle
on ümbersuunamine, faili I / O ja siis viiteid ja dünaamiline mälu.
Olen kindel, et sa oled kõik super põnevil pointers-- igaühe lemmik teema
nii lihtne aru saada.
Ma olen kindel, et te poisid kõik said aru, eks?
>> Nii asjad kõigepealt, redirection-- see on põhimõtteliselt ainult viis
kontrollida, kuidas te sisend asjad oma programmi
kuidas sa väljund asju oma programmi.
Peamisi viise, et te poisid on suheldes ta
on lihtsalt läbi standard välja Teie Print Screen siin.
Kuid on viise pipe-- nagu me näeme siin
on üks meie words-- liiki toru, et teave
või et andmed faili fail.
See on lihtsalt erinevad viisid asju oma programmi
ja läbi oma programmi, selle asemel, lihtsalt nende trükkimise sellele ekraanile
või kirjutades asju käsurealt.
>> Nii et esimene on väike suurem kui katus.
Nii output-- ta lihtsalt saadab väljundi faili asemel ekraani.
Nii et kui sul oli midagi, mis trükitud "Hello, world!" ekraanile,
kui paned selle asemel et output.text, et
loob see fail nimega output.text.
Ja kui sa seda avada, siis see öelda "Hello, world!" sinna.
See võib olla super kasulik kui teil on ton vigu
tegelikult, nagu me näeme seda.
Kui sa kaks kelku, siis see prindi veateateid.
>> Nii et kui sul on probleem koostamine, see on palju vigu
ja te saate takerdunud üritab sirvimiseks oma käsurida
läbi kõik need, saate lihtsalt neid printida faili,
avada see fail, nii et sul saad nende vahel liikuda lihtsam.
Ma tegelikult kasutatakse, et palju, kui ma olin silumine
minu 181 psets masina õppimist.
Nii et see võib olla super kasulik hiljem.
Samuti on kasulik, kui teil on olemas programm et äkki tekitab raamatukogu
või tekitavad mõned komplekt stringe, ja sa
pead suutma näha, et see tekitama neid õigesti.
See on viis, kuidas seda teha.
>> Nii et kui sa neid printida faili, siis saab kergemini neid läbi, eks?
Versus üritab kerima läbi oma käsurida.
Ja siis üks asi on tähele panna on, et vaid suurem
kui katus, kui te kirjutate faili, mis on juba exists--
nii nagu siis, kui me jooksime see esimene aega, me paneme selle output.text,
ja siis me pidime teise programmi et trükitud seda programmi kaks
ja tegi rohkem kui output.text, ta kirjutab selle-- nii
kirjutada, mis oli kunagi et faili alustada.
>> Nii et kui sa tahad lisada faili, nagu me näeme siin,
sa lihtsalt teha kaks üle märke.
Ja see lisab ta.
Ta ei kirjuta seda.
Nii et kui teil on vaja kasutada mitut programmide ja omamoodi hoida
lugu, mida kõik need on tagastamise teile faili
see on viis, kuidas seda teha.
Kui sa ei hooli, mida teie faili ja see lasti üle kirjutada,
võid lihtsalt kasutada ühe üle.
Kas on mõtet kõigile?
>> Sihtrühm: Like dot kärpida hello suurem kui väljund dot tekst, nagu kaks korda,
see lihtsalt näitab ainult väljundis dot teksti teise AEG_
>> SPEAKER 1: Õigus.
Seega oleks põhimõtteliselt ainult täiesti kirjutada, mis oli seal alustada.
Kui see fail siin, output.text juba
olemas, põhimõtteliselt mida iganes sa helistada et taas ühe suurema
kui sa ei saa lihtsalt mõelda nagu nagu see asendatakse faili.
Like, kui sa oled säästes Word dokument ja sa salvestada nii,
ja hoiate sama nime, ja see täiesti kirjutab it--
see on sama asi.
Igaüks on mingeid küsimusi lihtsalt kirjutamine faili?
Awesome.
>> Nii et ilmselt, kui sa vastupidine nool suunas, seda saab teha panus.
Nii et kui te poisid olid nagu Caesar või VISIONEER
ja siis tuli sisend midagi, teil oli käsurea argument
et tegelikult input ta.
See on veel üks võimalus seda teha.
Nii et selle asemel, et oodata jaoks käsureale
nagu siis, kui sa palusid oma postitust Caesar või VISIONEER,
kui teil on olnud tekstifaili mis oli sõnum
võid lihtsalt kirjuta see et.
>> Nii et kui see oli nagu täpp kärpida Caesar 3 alla nool sisestada teksti, mis
on oma sõnum, et läheks just fine.
Kui teie Caesar programm tegelikult küsitakse kasutajalt,
see on juba see, sest tipitud see fail.
See on lihtsalt veel üks viis.
Just vastupidine output-- lihtsalt sisend oma andmed.
>> Ja siis viimane on toru.
Nii et see on päris lahe.
Sest see võimaldab teil võtab toodangu üks
programmi ja pane see sisend teise programmi.
Ma ei tea, kas keegi teist mängitakse dešifreerida
et CS50 võib olla teile, kuid see oleks
võimaldab teil võtta mõned proovi esitada, kirjuta see oma krüpteerimist,
ja siis sealt kirjutad et oma dekodeerimiseks
veendumaks, et see osutus sama.
Nii et see on nagu kolm-viis silmus.
Mine seda.
>> Sihtrühm: Kui programm on mitu sisendit,
kas on võimalik öelda seda, mida sisend kasutada tekstifaili või väljundi?
>> SPEAKER 1: See on mitu sisendit.
Ükskõik faili oma input-- kui see on küsib sisendi esimest korda, see on
kavatse endale, ma arvan, et see on läheb toru kogu toimikule.
Nii et kui teil on mitu sisendit, sa oled saab olema torustiku mitu faili.
Nii et kui sa palud sõnumeid kolm korda oma koodi,
sa lähed tuleb panna kolmes erinevas faile.
Ja see läheb hulluks.
Ja sa ei pea muretsema, et just nüüd.
Aga see idee.
>> Nii et jah, toru on lihtsalt väljund ühe Programm kasutab sisendiks teistele.
Igaüks hea on?
Külm.
OK.
Sa ilmselt ei ole teha liiga palju seda.
Aga sa peaksid aru saama kuidas saab seda kasutada.
Ja seal on mõned juhtumid, võiksite seda kasutada.
>> Nii faili I / O- Ma tean, mida sa oled saying-- oleme harjunud lugemine
ja kirjutame meie ekraanil seal, mis on standardiks ja standard välja.
Ja see, mida kutid on olnud teeme algusest klassi siin.
Aga sa võid ka lugeda ja kirjutada faile mis on kõik faili I / O- nii faili sisend,
väljund on kõik see seisab.
Nii et see põhimõtteliselt tähendab, et saate salvestada oma andmed nüüd.
>> Kui sa lihtsalt printida kuni ekraan, see on põhimõtteliselt läinud, eks?
Niipea, kui te teete "Tere maailm "ja run" Hello world "
see prindib "Hello world" ekraanile.
Aga sa ei saa tõesti midagi ta sealt.
Kui teil salvestada tekstifaili fail, siis äkki
teil on andmeid, et sa oled lubatud manipuleerida või panna see fail
või panna see programm hiljem.
Üheks põhjuseks miks me seda teeme, on lihtsalt
kui viis andmete salvestamiseks hilisemaks kasutamiseks.
>> Mul on paar sammu siia lihtsalt jalgsi läbi standard
I / O. Esimeses etapis, siis on vaja luua viide
failile kõik mütsid FAIL star faili.
Nii et loob kursor faili.
Niisiis soovite avada.
Ja sa ütled, sõna otseses mõttes, lihtsalt faili võrdub fopen.
Ja see läheb tagasi kursor faili lihtsalt avada.
Ma nägin paar teist Poisid tööajal.
>> Aga üks asi, on mäletada viiteid
võivad olla mõned aadress või null, eks?
Kui me kunagi juhtum, kus midagi saab tagasi null,
Mida me peame tegema enne kui me kunagi seda kasutada?
Meil on vaja kontrollida, kas see on null või mitte, eks?
Kuna mõned teist võis küsimus kus iganes objekti
oli tagastata Breakout oli null.
Üritasid teostada mõne funktsiooni ta.
Ja arvuti saidi heita.
Õigus?
Vean kihla, et paari sa võis selles küsimuses.
>> Nii fopen, fopen on kas tagasi kursor faili
või kui midagi läheb valesti, see läheb tagasi null.
Nii et teil on alati vaja vaadata et ta ei ole tagastatud null
enne kui proovite midagi muud.
See on nagu standard paradigma et sa lähed vaja siin.
Kui seal kunagi juhus, et midagi võib naasta null,
veenduge, et see ei enne jätkamist.
Muidu sa lähed saada armas saidi vigu.
Ja keegi meeldib tegeleda need.
>> Nii nagu me näeme siin, esimene argument on lihtsalt faili asukoht.
Kui seda faili ei ole olemas, see saab luua, et fail.
Ja see on lihtsalt saab olema tühi.
Ja siis teine ​​argument on režiim, mis sa tahad.
Kas me tahame, et lugeda selle faili?
Kas sa tahad kirjutada seda?
Kas sa tahad lisada?
Nii et tegelikult ma lihtsalt said-- Kui faili ei ole olemas
ja sa üritad lugeda see, et see saab visata viga.
Kui faili name-- meeldib kui file.text veel ei ole
ja sa tahad kirjutada ta loob see
tühi fail nimega file.text teile.
Ja kui sa tahad lisada, mida peaks tegema sama asja.
Kas on mõtet?
Kui sa üritad lugeda faili, mis ei ole veel olemas,
see saab visata viga.
Vastasel juhul loob faili sulle seda, mida sa tahad seda.
Külm.
Nüüd saame lugeda faili.
Ja see on lihtsalt selline läheb läbi erinevate funktsioonide
et meil on faili I / O. See tahe vaja selle nädala pset,
kui ma õigesti mäletan.
Jah, täiesti saab vajalik selle nädala pset.
Nii fgetc naaseb järgmise sümboli.
fgets lihtsalt tagastab rida teksti.
Ta naaseb midagi kuni uus rida ja see murdub.
Nii fread loeb teatud baitide arv ja kohad neid
massiivi, mis on midagi, mida võiks
tahad teha uuesti size-- võib olla kasulik.
>> Mitu inimest lugenud pset spec, muide?
OK.
[Kuuldamatu]
>> SPEAKER 1: OK.
Hea küll.
Kindlasti lugege selle-- see on lõbus pset.
Sa saad taastada kustutatud mälu card-- tõesti põnev, kui see töötab.
Aga kindlasti lugemist alustada seda.
Tule räägi minuga, kui teil on küsimusi selle kohta.
>> OK, nii nagu ma ütlesin, fread loeb teatud baitide arvu.
See on mingi teatud number et sa lähed, et seada.
Ja siis fseek lihtsalt liigub teatud asendis.
Nii et äkki sa ei hooli umbes järgmise 10 baiti.
Sa tahad liikuda edasi.
Sa ei hooli neist.
Te soovite lugeda algusega kell bait 11.
fseek võimaldab teil seda teha.
Nii et see võimaldab sul olla valikuline kohta, mida sa loed.
Kuna fgetc, fgets ja fread loetuks alates teatud kohas failis.
>> Viis mõelda on see, kui see Meie fail, kui te esimest korda avada,
sa pead seda seisukohta faili mis algab alguses.
Iga kord, kui helistate fgetc, fgetf või fread,
see saab alata Selles asendis marker.
Oletame, et sa tahad, et lugeda see patakas mälu siin.
Sa ei saa lihtsalt helistada.
Sa pead otsima siin ja siis loe sealt
või lugeda, saab või GETC, sõltuvalt sellest, mida sa tahad.
Nii püüab lihtsalt võimaldab teil jätke osi mälus.
Ja see on ainult kuidas sa ei jäta asju
ilma nende lugemine oma puhvris.
Kas on mõtet kõigile?
>> Loomulikult, seal on palju paralleelselt siin--
Meie toodangu või sisend ümbersuunamine, olete lugema ja kirjutama.
Nii fputc lihtsalt kirjutab iseloomu arvesse fail.
fputs kirjutab joon.
Fprintf prindib vormindatud väljund.
Nii et kui teil on sakid, või ruumi või tühi-tähi.
Ja siis fwrite kirjutab mõned baidimassiiv faili.
Seega on see samamoodi fwrite ja fread on analoogsed
opposites-- fgets, fputs ja siis fputc ja fgetc-- palju
hull, kiire asju.
>> Just sellist hoida seda handy-- sul on eri aegadel
kus äkki sa lihtsalt tahad üks märk korraga.
Ehk soovid terve rida.
Oma sõnastik pset-- mis on kahes psets,
Ma usun, et me anname teile kogu sõnaraamatuga teksti formaat
mis on iga sõna joonega eraldatud.
Nii et kui sa tahad, et lugeda üks sõna korraga,
milline võiks te kasutate, kui sa loed ja nad kõik on eraldatud uute liinide
ja tahad lihtsalt üks sõna korraga?
>> Sihtrühm: fgets
>> SPEAKER 1: Õigus.
Fgets-- sest mis tagastab kõik, mis on ühel real.
Ja kui iga sõna on oma oma rida, saame kasutada fgets.
Külm.
Kas on mõtet, kõigile?
Cool?
Jah, me ei kavatse saada lõbus osa koos suunanäitajaks
väga kiiresti, kui sa saada teha mõned math.
Ja see saab olema suur.
>> Viimati step-- sulgeda fail.
Nii palju asju siin üks meie paradigmad
on, kui ta saab tagasi null, kontrollige null.
Kui avate midagi, Sa parem sulgeda.
OK, nii et sa ei teinud, kuni olete teha, kui olete sulgenud.
Selline nagu see ei ole enam kuni rasv on daam laulab.
See on nagu sulgedes oma faili.
Nagu ta ütleb siin, just korrata, alati
avage fail enne oled lugemist või kirjutamist.
Ja alati sulgeda, kui olete avanud seda.
Kõik korras?
Külm.
>> Nii et siin on üks näide.
Nii tiny-- Ma ei tea, kas te poisid on näha, et väga hästi.
Kui me vaid võiks suurendada heledust kuidagi.
Las ma tegelikult seda teha, kui suudan.
OK, kutid ei saa tõesti näha, et üldse saab?
OK, me ei kavatse seda teha, siis.
[Kuuldamatu]
>> Ma eeldan, et see on palju parem vaadata.
Kas keegi näha, kus mu hiir läks on küsimus?
Ah, seal see on-- mis võitleb!
>> OK.
Põhimõtteliselt kutid peaks olema lahke idee, mida see teeb.
See ei ole täiuslik.
Aga ma pigem seletada kui kulutada rohkem aega püüdnud seda vormindada korralikult.
Põhimõtteliselt, kui sa näed siin, alustame fail lahti.
Ja meil on mõned andmebaasi faili, et me oleme
avamine, mis ütleb, et see on meie õpilastele.
Ja me ei kavatse kirjutada seda.
Nii et loomulikult, tagasi null.
Seega peame kontrollima null.
Ja siis kui see ei ole null, me läheme läbi.
Ja nagu näete, me oleme silmukoiminen siit läbi.
On õpilastele.
Õpilased on hash defineeritud kui kolm.
Ja mida me teeme on meil printimise faili, eks?
Mida me printida meie faili?
>> Sihtrühm: hinded mis on massiivi?
>> SPEAKER 1: Jah.
Skoori, mis on array-- täpselt.
Nii avame andmebaasi faili, mis
Eeldan, on mingisugune palgaastmed andmebaasis.
Ja me lihtsalt väljatrükk hinded iga õpilane, et fail.
Cool?
Väga hea.
Awesome.
OK.
Lähme tagasi mina--
>> Sihtrühm: Mul on kiire küsimus.
Kas printf mitte silmus?
See on lihtsalt selles, kui loop?
SPEAKER 1: Ei, see on silmus.
Ma ei näe oma hiirt väga hästi siin.
Nii et ma olen hädas formaat, mis korralikult.
See tuleks keskjooks välja läinud.
See peaks olema siin.
See on see, mis on teie jaoks silmus.
Ei.
Nüüd on ilus.
Nii see on, kuidas see peaks olema-- välja eest, et viimane sulg, et ma rahuldamata.
OK.
Kas on mõtet kõigile?
OK.
Me läheme edasi liikuda et järgmine asi then--
mis, tegelikult, sa lähed vaja näha koodi.
Nii et ma olen lihtsalt läheb kopeerida selle üle just nüüd.
OK.
Nii et ma lähen näitan kutid on see kood.
Ja ma tahan, et sa proovida ja joonis saada, mis see peaks tegema.
>> Nii et antud selle-- võta minut või nii.
Proovige ja nuputada, mis toimub siin.
>> Kõik ideed?
>> Me teame, et meil on vähemalt kaks argumente käsurida, eks?
Eeldan, millest üks saab olema et [kuuldamatu] Meie programm on
ja siis midagi muud.
Sest kui [kuuldamatu] on vähem kui kaks, siis kisa neid.
Õigus?
Ja kasutamise, tundub see saab olema mingisugune fail.
Me kõik oleme nõus, et see on?
Nii et nüüd, milline on loop teed?
Mis läheb läbi?
>> Sihtrühm: Kõik failid.
SPEAKER 1: Täpselt.
See läheb läbi kõik failid, mis me oleme sisend olemas.
Nii et iga fail, see on avades mõned string seal.
See avab selle faili.
Õigus?
Ja see lugemine see.
Muidugi, kontrollides, kas see on null.
Ja siis on see trükkimiseks.
Kui see on null, see on lihtsalt meile et see ei ole fail, mis on olemas.
Sest mäletan, koos Loe meie fail on olemas.
Õigus?
Mis kirjutada ja lisab, sa ei pääse ta.
Aga lugeda, meie fail on olemas.
>> Ja siis, kui see on olemas, mida me siin teeme?
Lihtsalt alustada siin.
Mis see on do-- see esimene märk.
Mida ta teeb?
Ta saab ühe märgi, eks?
Nii et mida see teeb?
Läheb esimene märk.
Keegi teab EOF?
>> Sihtrühm: Faili lõpp?
>> SPEAKER 1: lõpp file-- täpselt.
Nii et see läheb läbi minna kogu fail, eks?
Ja siis see saab uuendada poolt saada iga järgneva iseloomu.
Õigus?
Ja mida see teeb?
Sihtrühm: Haara et in--
>> SPEAKER 1: Putchar pildid oma ekraanisäästja.
[Kuuldamatu] iseloomu.
Ja siis, kui ta [kuuldamatu] see fail sulgeda.
>> Sihtrühm: Kas sa ei pea [? teine? ?]
>> SPEAKER 1: Mitte tingimata.
Ma mõtlen, et see on mingi vaikimisi antud.
Kuna see käib küll, niikaua see ei saagi seda, sa oled hea.
Ma mõtlen see on ilmselt hea tava teha muud.
Aga muidu ei ole alati vajalik eriti
kui sul on midagi nagu kasum, mis on
tähendab, et antud juhul, kui see saak see on teie programm läheb lõpuks
ja see ei saa kunagi seda.
See on rohkem, et juhul, kui sa oled ei pruugi naasmist midagi.
Sest kui see ei olnud tagastamise midagi,
see tähendaks, et kui see oleks tõsi, Ülejäänud see veel kestab.
Ja sel juhul sa tahaks vale.
Kui see tagastamise ja oma programmi lõpetamist,
muidu ei ole vaja kõiki ajal, sõltuvalt kontekstist.
Jacob, kas teil on küsimusi?
Sihtrühm: Jah.
Seega ei fgetc saada järgmine märk?
Kuidas iseloomu suurendada?
SPEAKER 1: Jah.
Nii fgetc saab järgmise sümboli.
Sa ei mõtle seda nagu C ++ mõnes mõttes.
>> Sihtrühm: Mis oli EOF?
>> SPEAKER 1: EOF on faili lõppu.
See on lihtsalt marker, mis annab teada, et sa oled lõpuks oma faili.
Nii et see on trükkimineku oma standard välja.
Ja siis see saab sulgeda faili, kui see on tehtud.
Ja siis lähme Järgmise faili, eks?
Nii et üldine, mida see programm teeb?
>> [Kuuldamatu]
>> SPEAKER 1: Jah.
See lihtsalt printida kõike.
Nii et kui te kutid on kunagi kasutatud CAT ja siis nimi mõned file--
Ma ei tea, kas keegi teist on kunagi teinud, et oma terminal.
Aga kui te olete kunagi kasutada käsk CAT-- C-A-T--
ja siis mis iganes faili teil on there-- see
prindib välja oma terminal, mis võib olla super mugav asju.
Ma kasutan seda palju.
Kas on mõtet kõigile?
Cool?
>> OK, nii et teie ülesanne now-- kas ise või koos ümbritsevate inimeste sina--
on lihtsalt kirjutada lihtne programm et lihtsalt kirjutada "Hello, world!"
välja failina.
>> [Kuuldamatu]
>> SPEAKER 1: ma olin nagu, ei Mina, et halvasti eelmisel nädalal?
Ma ei usu, et see oli halb.
Ma olen õnnelik, et sa oled kõik siin.
See tegelikult teeb mind õnnelikuks.
Ma olen tüdruk lihtsaid naudinguid.
Ma lihtsalt meeldib, kui mu lõik käib.
Nii et ma lihtsalt saada see algas kutid, nii et saame koodi koos.
Mulle ei meeldi, pannes kõigile kohapeal, kui sa tahad olla.
>> Sihtrühm: viktoriini teha meil on kirjutada programm?
>> SPEAKER 1: Te võite paluda koostada lihtsat programmid käsitsi.
Yup.
>> Sihtrühm: Viktoriin on järgmisel nädalal, eks?
>> SPEAKER 1: Viktoriin on järgmisel kolmapäeval.
See tähendab, et seal on ilus [? CSE?] liigitamiseks pool hiljem, mis
tähendab, et sa saad oma skoori tagasi, et night-- mis kell?
Kes teab?
Aga see, et öösel.
>> Hea küll.
Kuidas me tahame alustada seda?
Ma annan sulle hint-- algab see.
>> Sihtrühm: Sa pead faili avamiseks.
>> SPEAKER 1: Jah.
Nii et mida sa tahad nimetame seda?
Kas sa tahad seda kutsuda "fail"?
Teeme selle lihtsaks.
Nii fopen-- mis on meie väljund test saab olema?
Kõne see "Tere".
Ja mis on meie režiimis?
Mida me teeme selle faili?
>> Sihtrühm: Loe.
Kirjutamine.
SPEAKER 1: Me kirjutame seda.
Armas.
OK, nii et me peame seda faili nüüd.
Mida me peame tegema?
Sihtrühm: Kontrolli, kas see on null.
SPEAKER 1: Kontrolli, kas see on null-- täpselt.
See, mida ma tahaksin kuulda.
See peaks olema automaatne, eriti päris palju sellest punktist edasi.
Kui hakkad segfaulting, siis ilmselt ei kontrollinud for null kusagil.
Üheksa korda kümnest, see on saab olema sinu viga.
Nii et kui sa võiksid lihtsalt saada harjumus alati kontrollida, kas see on null,
Sinu elu saab olema kena ja easy-- või lihtsamaks.
>> Nii et vaadata, kas see on null.
Nii et kui see ei ole null, mis on see, mis paugu võrdub
means-- ei null-- see on kehtiv.
Mida me tahame teha?
Me lihtsalt tahame, et printida et see fail, eks?
Niisiis, mida me saame kasutada?
>> Sihtrühm: Fprintf
>> SPEAKER 1: Fprintf-- armas.
Ja fprintf võtab kaks arguments-- kus see läheb ja mida me tahame trükkida.
Mis on esimene?
Kus see läheb?
>> Sihtrühm: Fail.
>> SPEAKER 1: See saab esitada.
Ja mida me tahame trükkida?
"Hello, world!"
Hea küll.
Meil on üks viimase asi-- teine ​​suur paradigma siin.
Sihtrühm: Sule.
SPEAKER 1: Sule.
Seal sa lähed.
>> Sihtrühm: Kas see juhtub kui fail on null?
SPEAKER 1: Ei, see on, kui see ei ole null.
Sihtrühm: Oh, kui see on not-- OK.
Sest fopen ja seejärel kaks argumenti, et sisse minna,
mida see esimene argument tähendab jälle?
>> SPEAKER 1: argument nagu faili nimi
et sa tahad minna.
Nii et pärast seda jookseb, siis oleks mõned faili nimega "tere"
et oli "Hello, world" sees.
See on kõik.
Lihtsalt nime.
>> Sihtrühm: Ja kuna see on kirjutamine, faili ei pea juba olemas.
Kas see, mida sa ütlesid?
>> SPEAKER 1: Õigus.
Täpselt.
Kui "Tere" failina veel ei ole, see on
kavatse luua fail nimega Tere "ja kirjutada selle eest ise.
>> Sihtrühm: Kui sa räägid programmi kirjutas faili
miks sa kirjutad "fail" asemel faili nimi ja fprintf--
>> SPEAKER 1: Kuna antud juhul on meil et suur FILE-- kõik caps-- star,
faili.
Nii et see on kursor faili mis sa räägid.
See on nii, et me lihtsalt vaadake seda.
Nii et kui te ei mõtle file-- ahaa,
saame kasutada see-- fail siit viitab avamine "Tere"
ja lasta tal kirjutada.
>> Sihtrühm: Kas paneme "Tere" asemel [? lihtsalt?] f faili?
SPEAKER 1: Ei, sest "Tere" peab olema avatud ja kirjutatav.
Faili siin on nagu tähis, mis ütleb OK, me
on see file-- hello-- et me vaatame.
See on avatud.
Ja me kirjutame seda.
Kui kasutate ainult "Tere" mis on kapseldatud seda.
Nii see läheb närvi.
Ma mõtlen, et sa oleks võinud nimeks.
Sa oleks võinud teha faili star "Tere", võrdub see.
Aga mõte on selles, et sa vaja faili star pointer, et
saaks kasutada neid funktsioone.
Sihtrühm: Kas sa teeksid fail, star, fail "Tere"
või sa pead panema esitada star, fail on?
SPEAKER 1: Sa võiksid teha faili, star, "Tere."
Seda saab muuta, et mis iganes nime sa tahad.
See on täiesti meelevaldne mis see nimi on.
Saate nimi see midagi.
Nimeta see sõitvate spagetid, kui sa tahad.
>> Sihtrühm: Mis on "w" jutumärkides eest?
>> SPEAKER 1: "w" on lihtsalt režiimi.
Nii et me kirjutame seda faili.
Igaühel on hea?
Selge?
Jah.
>> Sihtrühm: Nii et kui ta kirjutab seda fail, kuhu me siis teada, et faili?
>> SPEAKER 1: See oleks sama kataloog, kus asute.
Kui oled pset kolm ja sa jooksed selle sees oma pset
kolm kausta saab olema Selle faili nimega "Tere."
Cool?
Igaühel on hea?
Mul on tunne, nagu sa oled kõik saada see, mis on suurepärane.
OK.
Niisiis tagasi minu slide show-- Ma armastan, kui asjad töötavad.
OK, pointers-- Kas te põnevil?
Osuti on suured.
Nad võtavad natuke wrap oma pea ümber.
See on minu teine ​​aasta õpetamise näpunäiteid.
Ja ma arvan, et ma lõpuks sain aru.
Nii et kui sa vaeva, et see on OK.
Nagu ma enne ütlesin, joonistus pilte aitab palju asju CS,
nii palju kui ma arvan, et inimesed kipuvad arvan, oh, me oleme arvuti.
Me peaksime lihtsalt koodi.
Ei-- joonistus pilte tõesti teid aidata.
Ja ma tõesti kutsun teid üles kasutusele võtta oma kindergartner pool
ja tuua välja värvipliiatsid või markerid ja viigiga.
Sest see aitab teid.
Ja kui sa näed mind tööajal, ma veavad hunniku paberit
pliiatsid joonistus asju teha.
>> Nii et eriti pointers-- joonistada pilte.
Ja ma olen kindel, et me oleme tegelikult läheb joonistus mõned pildid ka siin.
>> Nii kutid kõik sai näha Binky, see lahe claymation asi.
Ja me arvame, et see on tõesti naljakas, kui ta lahvatab kamp tükki.
See on mingi koomiline leevendust klassis.
C [kuuldamatu] see suur võime saaks kontrollida mälu.
Ja see on üks neist asjadest, mis tegelikult muudab nii võimas keel.
Aga suur vägi suur vastutus.
Ja hull asju võib juhtuda kui sa ei ole ettevaatlik.
Nii et kui te kasutate suunanäitajaks, sa tahad teha
kindel, et sa tõesti aru täpselt, mida sa teed.
Loodetavasti järgmisel natuke aeg aitab teil tõesti aru
suunanäitajaks, kuidas neid kasutada, ja kuidas neid töödelda.
>> Nii memory-- ma olen kindel, et me oleme näinud seda skeemi enne.
Nii et see on lihtsalt skeem kuidas asjad võivad olla salvestatud mällu.
Nii et sa põhimõtteliselt on need suur massiive üks bait plokid
on see, mis meil on siin-- kerge sammuga üks iga kord.
See on hex [kuuldamatu] nii kaheksa-bit plokke.
Ja iga plokk on seotud mõned kuueteistkümnendsüsteemis aadress.
Nii et kui sa oled kunagi näha 0x, et lihtsalt notating
et see on kuueteistkümnendsüsteemis aadress.
Võite arvata, see tähendab, Mõnes aadressi mälus.
Me räägime mälu aadressid Kui näed kuueteistkümnendsüsteemis.
>> Meil on ints on muutujad, ujukid on muutujad, mis salvestavad.
Nii ints pood ints.
Ujub pood hõljub.
Nii et meil on ka viidad et salvestada mällu aadressi.
See on omamoodi kaardistamine.
Osuti on eranditult mälu aadresse.
Nii et see on nagu sinu tüüpi seal.
Teie seade on 32-bitine, mis tähendab, et teie mälu aadress on neli baiti.
Seega igasugused pointer, et teil on Samuti saab olema neli baiti.
Või muidu, kui see on neli baiti, mälu on neli baiti.
Osuti pood mälu.
Seetõttu nad neli baiti.
Cool-- tahan kindlustada, et.
>> Sa peaksid saama koomiline nüüd.
Ma ei tea, kui palju te on XKCD fännid, aga ma armastan XKCD.
See on tore.
>> Hea küll.
Nii et luua pointers-- nagu ma ütlesin, see on päris palju just nagu midagi muud.
Sul on tüüp.
Sul on nimi.
Õigus?
See, mis meil on olemas. [? Hex?] Täht tähendab, et see on osuti,
ja siis mida iganes sa tahad seda kutsuda.
Nii et tüüp on mida saab salvestada.
Kõik korras?
Samamoodi, et kui me teeme ints, me teame, et me hoidmiseks int seal.
Mis pointer, see omab mälu aadress.
Aga mida see tähendab selle-- siin, kus joonistus läheb tarvis minema.
Nii antud juhul on meil mõned value-- oletame neli.
Neli on aadressil üks.
OK?
>> See esimene tähendab siin et see kursor 2x.
Õigus?
See on mõned osuti x.
x võib olla midagi, mis iganes.
Ükskõik x on-- ütleme x on neli.
See saab salvestada mälu aadress siia.
Nii int, star, x-ist on see mõne muu pesa memory--
kes teab, mis see on.
Aga see läheb salvestada aadress siia.
Nii et see oleks like-- antud juhul Ükskõik,
hoitakse 0x1-- iganes on salvestatud aadressil, et meie pointer omab
on mängu üles mida oleme määratud.
Nii on 0x1, antud juhul on see x.
See on võimalik ainult kunagi int kui me kasutame seda.
>> Samamoodi, kui meil on teine ​​1y, olenemata
aadress on salvestatud y on olla char-- sama asja z.
Samamoodi, kui sa proovida ja teha intx võrdub 0,4,
see läheb kisa teie ja nagu ei ole, sa ütlesid, et tahtsid int.
See peaks olema int.
Stop üritab teha seda sularahaga.
>> Seega, las asjad olla, mida nad tahavad olla.
Las asjad olla nemad ise.
Nii suur asi on lihtsalt mis tahes tüüpi pointer
see tähendab, et see on ainus asi, mida saab salvestada seal.
OK?
Mis praktikas, nagu ka Möödunud nädalal kõik
Tundub tõesti selline abstraktne.
Me teeme mõned praktikas.
Tuleb mõttekam.
>> Nii viitamine ja dereferencing-- see väga oluline, et saada need sirged.
Mul on veel värskendada iga nüüd ja siis.
Ja ma olen nagu ootama, kus üks ma tahan?
Nii-märk on tegelikult annab te viite või aadress.
Nii et ta naaseb aadress mälu muutuva säilitatakse.
Nii see läheb tegelikult su juurde tagasi kuueteistkümnendsüsteemis, samas dereferencing see
tegelikult annan teile andmed, mis on salvestatud on.
OK?
Nii et me ei kavatse vaadata näiteks tõesti kiire, või tegelikult järgmisena.
>> OK.
Nii et me peame mõtlema tõesti hoolikalt selle kohta.
Nii et siin on meil mingi täisarvu x.
Ma lähen, et proovida ja teha seda välja minule võimeid.
Nii et me ei kavatse on see pesa x.
Ja see hoidmine viis.
Selle aadress on 0x4.
Cool?
Kõik hea.
>> Nüüd on meil see pointer.
See oli siin.
Ja ampersand annab meile aadressi midagi.
Niisiis, käesoleval juhul on see aadress x.
Mis on aadress x?
04-- ja see osuti on 0x08.
Cool?
Nii saate mõtlema pointer, 04, vaid juhib siin.
Ja need nn viiteid sest kui saame rohkem sellesse,
sa lähed, et näha, osutades asju.
Ja üks plokk osutab teise plokk teeb palju rohkem mõtet.
Nii et siin on kaks.
Ja siis on meil mõned koopia, mis on what-- 0x0c.
Ja see läheb dereference meie pointer.
>> Mida see ütleb on OK, siin on meie pointer.
Väärtust ta salvestab on 0x04, Ja mis ta ütleb, on minna sellele aadressile
ja ütle mulle, milline on ta.
Nii et tegelikult mida see nool läheb.
Sa ei mõtle seda nagu oma tähe.
Nii et OK, kui me teeme star, see tähendab järgida.
Mine sellele aadressile.
Ja see on põhimõtteliselt ainult järgmine see nool sellele mälu patakas.
Ja anna meile, mis on see, mis on 5.
See on põhjus, miks meie koopia võrdub 5.
Kas on mõtet?
Kas keegi mind vaja läbida et uuesti või aeglasemalt?
Sa tahad minna läbi veel üks kord?
OK.
Me läheme tõmmata uuesti.
Kui hakkame me kõik ühel meelel oleme mõned patakas mälu, mis on muutuv
x, et me seame võrdne 5.
Me ei kontrolli, kui see on mälu.
Nii et see koht on lihtsalt meelevaldselt määratud.
Hea on?
OK.
Siis me initsialiseerida pointer int.
Sellepärast see on lubatud osutada x, sest meil on int siin.
Meil on teine ​​patakas mälu, sest see pointer
on muutuja nagu midagi muud.
See on meelevaldselt määratud ruumi mälus.
Ja mida see salvestab on aadress x.
Ampersand tähendab aadress x.
Mis on aadress x?
>> Sihtrühm: See on zero--
SPEAKER 1: 0x04.
Nii then-- viimane.
Meil on mõned copy-- uuesti lihtsalt üks muutuja.
Nii et olgem määrata suvalise koha.
Ja meil on käivitatav meie pointer.
Star tähendab minna aadress salvestatakse minu pointer.
Ütle mulle, mis seal on.
Nii aadress salvestatakse meie osuti on 0x04.
Nii et me läheme sellele aadressile.
See osutab, et aadress.
Millest see mälu blokeerida?
See on viis.
Nii see on, mida anname meie koopia.
Igaühel on hea?
Külm.
Again-- pilte.
>> Nii jälgimise väärtused siin-- ma olen lase kutid mõtlema.
Saame veel üks pilt.
Aga ma tahan, et sa proovida ja põhjus läbi selle ise ühe minuti.
>> Kuna nad ei anna meil näiteks aadress,
Ma lihtsalt teha ampersand x-ist mis peaks aitama sõita koju.
Ampersand tähendab aadress.
>> Nii et esimene, igaüks minna esimese rea.
Mõned x kogumi five-- mõned juhuslik pesa mälu.
Int star osuti on võrdne aadressil x, õigus?
Int star pointer loob see plokk, nõuab see pointer,
ja omistab selle aadress x.
Ma olen kohutav sümboliga.
>> Nüüd, mida me teeme on ütleme OK, on ​​käivitatav meie pointer.
Nii et me läheme OK, mis on meie osuti?
See on ampersand x.
Mine ampersand x ja ümber jaotada see.
>> Nüüd, ampersand x hakkab olema 35.
Nii et põhimõtteliselt, kui sa oled dereferencing lähete OK.
Sa lähed joonistus pilte niimoodi.
Sa lähed joonistus nooli üle, kus see on.
Nii et minge sellele pesa mälu ja kas anna mulle see raha tagasi, ei muuda seda.
Sel juhul, sest me oleme selles väärtus, me määrates, et see on 35.
Arvestades, et viimase üks, kui te märkate, oleme
olid määrates, mis oli siin midagi muud.
>> Nii et nad on selles awesome tabelis.
See ei ole nii halb.
Te tööd selle kallal.
Ma lähen seda välja tõmmata laual.
Me läheme selle täita koos, eks?
Nii et haara paberit, ostke partner, tööle asuda.
Ma lähen, et saada suurem tükk kriiti.
Sest see saab olema palju.
OK.
PROFESSOR: OK.
Alustame esimeses reas.
Hakkame seal, siis poisid võib-olla läbi töötada veel.
OK.
võrdub b korda c, siis millised on?
See ei ole konksuga küsimus, ma luban.
>> Õpilane: 4 korda 5.
>> PROFESSOR: 4 korda 5.
20.
Mis on b?
Õpilane: 4.
>> PROFESSOR: Ja c?
Õpilane: 5.
PROFESSOR: 5.
Ja siis see lihtsalt läheb tuleb ampersand, ampersand b,
ampersand c, eks?
Pole paha.
See on piisavalt lihtne.
OK.
Nii et järgmise üks.
Võrdub korda c, juhul keegi oli tunne, et.
Kas igaüks tuttav koos korda võrdub?
OK, kõik see means-- see on lühendvormina võrdub korda c.
Võite seda teha rajoonis lisamisega, mille lahutamine.
Seda saab teha võrdsete või pluss võrdub c tähendab võrdub pluss c, miinus võrdne
c oleks võrdne miinus c.
See on lihtsalt süntaktiline suhkur.
>> Niisiis, käesoleval juhul on võrdne korda c annaks meile mida?
Jällegi, ei ole konksuga küsimus.
>> Õpilane: 100.
>> PROFESSOR: 100.
Kas midagi muutub?
Ei.
Võib-olla ma lõpuks saan parem minu sümboliga.
>> Õpilane: OK, sorry, kuidas sa saad 100?
PROFESSOR: OK.
Nii on võrdne korda c, nii korda c.
Õpilane: Oh, te kasutate jaoks previous--
PROFESSOR: Jah.
Nii et need on meie viimased väärtusi.
Need on, mida sa peaksid olema kasutades liigume alla, OK.
Niisiis, b on ainus asi, muutmine, eks?
Nii et olgem täitke kõik muu.
B. Mida b saab olema?
Olla või mitte olla.
Nii et mida see teeb?
Mis on täht pa teed?
>> Õpilane: Kood asukohast pa.
>> Õpilane: Ei, mitte päris.
Nii et see on d alles.
>> Õpilane: Nii b on käega väärtus aastas.
>> PROFESSOR: Jah, nii pa on aadressi, eks?
Nii, et see ütlus lahti, kus on salvestatud ja annavad sellele väärtust.
Mis on b?
Õpilane: 100.
PROFESSOR: 100.
Perfect.
OK, nii et arvuti on see, mis on muutumas.
Kõik muu jääb samaks.
Mis on arvuti saab olema?
Lihtne ülesanne.
PC on võrdne aastas ja mis on pa?
>> Õpilane: ampersand.
PROFESSOR: Perfect.
Nüüd me saada huvitav.
OK, olgem murda see maha.
Esiteks, milline on b korda c, sest see on lihtne osa see, eks?
B korda c on--
>> Õpilane: 500.
>> PROFESSOR: Jah, nii mida see teeb,
kui see täht pb, mis on muutumas?
>> Õpilane: Mis on the--
PROFESSOR: Mis on b?
Õpilane: Mis on ruum et pb osutab.
PROFESSOR: PB on suunatud mina--
Õpilane: B.
PROFESSOR: B. Nii et ainus asi muutmine on b, eks.
Nii b korda c, 500.
Nii see on, mida muudab nüüd.
Külm.
Armas.
Te teete väga.
Olgu, murdes see maha.
C muutub, eks?
Nii saame täita kõik muu.
Vaatame.
OK.
Me teame, et c saab olema toode kaks numbrit, eks?
Mis kaks numbrit, kuigi?
>> Õpilane: ja c?
>> PROFESSOR: Nii on õige esimene.
Nii et me d viitamine p, eks?
P võrra, nii et me teame, et see saab olema 100 korda mis?
Times mida teeb arvuti käsk?
Punktid a.
Nii et 100 korda 100 on 10.000.
Kas see on mõistlik?
Külm.
Kodu venitada, poisid, viimane rida.
OK.
Mis muutuvas siin?
>> Õpilane: A.
PROFESSOR: A. Perfect, nii kõik muu võib jääda samaks.
OK.
Ja mida?
Nii et see on korda mis?
See on star pb.
Nii star pb tähendab siin pb, pb punkti b.
>> Õpilane: 500.
>> PROFESSOR: 500.
Nii et meil on 500 korda 100.
See on 50.000.
Huh!
Vaata seda.
>> Õpilane: Miks me peame ja c jaoks last--
PROFESSOR: Vabandust.
Õpilane: Oh, OK.
PROFESSOR: Minu viga.
Palju kirjalikult.
Igaühel on hea?
Mitte liiga halb, eks?
Just võtab vähe kuigi läbi töötada.
Kui sa murda see maha, mõista, mida iga osa
viitab mina-- kui kõike on,
yes-- jaotada see, et vähe probleeme ja siis rekombineerumise,
ja mida saate teha mõned awesome asju.
Seal on vastused, kuid me tegime seda.
Pointer aritmeetika.
Ah.
Mu käed on kõik jahune.
Nii liitmisel või lahutamisel int korrigeerib pointer
suurusest tüüpi pointer.
Mäletan, kuidas iga tüüpi on erineva suurusega?
Nii nagu topelt või pika aja, kaheksa ja int on neli kuid char on üks.
>> Nii et mida sa teha tahad on-- üks asi meeles pidada
on just see, kui palju teie osuti väärtus tegelikult muudab
sõltub tüüpi pointer see on.
Igaüks hea on?
Kas ma saan kustutada seda?
Oleme hea?
Awesome.
>> Nii et kui meil on mõned pointer selle-- see on- ma olen
kavatse teha see int pointer.
See salvestab selle.
Kui ütlete pointer pluss üks, mida ta tegema hakkab
on, et see saab uuendada see suurus int
sest see on tüüpi pointer see on.
>> C-ga, kõik on väga range ja reguleeritud.
Int osuti läheb värskenduse palju ruumi int võtaks.
Int on neli baiti.
>> Mis oleks see muutuda?
Sa oled lihtsalt lisades neli peale seda.
Nüüd kursor oleks olema-- OK.
>> Nii et kui see oli char ja tegime pointer pluss üks, siis mis see oleks nüüd?
Kui see started-- teeseldes me started-- õige nüüd on 0x08.
Olgem nüüd öelda, et see oli char pointer, ja lisasime ühe.
Mida see muutuma?
Mitu baiti on char?
>> Sihtrühm: One.
>> SPEAKER 1: One.
Sihtrühm: Nii 0x09.
SPEAKER 1: Seega oleks üheksa.
Nii lihtsalt midagi meeles.
Just siis, kui sa lisada, et see ei ole lisades ühe, kui see char.
See lisades, kui palju baidid tüüpi, et ta on,
mis ongi meil see võrrand siin.
Nii et see on int korda suurem tüübi pointer.
>> Nii et meil on näiteks siin.
y määrati selle väärtuse, 0x4, kui me tegime y pluss võrdub üks.
Mis see on, mis on x, ei muutu.
Mida tähendab muudatus on see, mis on y.
Aadress salvestatakse y ajakohastatud neli sest seal on neli baiti int
ja see on int pointer.
>> Hea küll.
Nii et nüüd on meil veel üks ülesanne.
Seega on küsimus selles, milline saab printida.
Kõik ideed?
>> Sihtrühm: arv tähemärki õnnelik kass?
SPEAKER 1: Täpselt.
Nii nagu oma string.
Kas kõik said?
Kas me tahame kõndida läbi on?
>> Jah, OK.
Niisiis, mida me oleme siin-- I nagu seda nii palju.
Ma ei pea [Kuuldamatu] naeruväärselt.
>> Nii et meil on string siin õnnelik kass.
Armas.
Meil on mõned loendur me jälgida.
Nii et meil on mõned char * pointer et lihtsalt vahel on võrdne Str.
Mida see teeb, on see määrates mõned pointer
algust oma string.
Sest ma olen kindel, sest see mainiti loeng,
me oleme teile poisid seda andmetüüpi nimega string.
>> Aga tõesti stringid on lihtsalt massiivi of-- nagu char *.
See on kursor kamp tähemärki mis on külgnevas mällu.
Nii see lihtsalt seab ta võrdub iga string on
eristab kus tema esimene märk on.
Nii et see on lihtsalt, milles mingil hetkel võrdne stringi algust.
Igaüks hea on?
Külm.
>> Nii et see on dereferencing meie pointer.
Nii et see on tegelikult läheb annab meile raha sisse,
meie string, mis me räägime.
Ja me ütleme nii kaua, kui see ei ole null terminaator.
Nii et jätkame kuni saad kuni stringi lõpuni.
Uuenda oma kursorit ühe võrra.
Nii r, siis tegelikult värskendada ühe iga kord, sest see on paalia,
char *.
>> Nii et see läheb läbi minna.
See saab uuendada.
Nii et esimest korda sel jookseb, see saab olema siin h.
See saab uuendada.
>> See oleks.
See oleks p, y, ja nii edasi ja nii edasi.
Me uuendada counter.
Kui see jõuab lõpuks on see lihtsalt prindib, kui kaugele ta on saanud.
Jah.
>> Sihtrühm: Nii et see loeb ruumi kui üks, eks?
OK.
>> SPEAKER 1: Mõtle nii.
Kas see question--
>> Sihtrühm: [kuuldamatu].
>> SPEAKER 1: Ära muretse.
Seda ma teha.
Olgu, nii et üks asi, mida ma mõistma, et array,
saab ka seda ravida pointer, kuna massiivid on vaid
pidev laigud mälu.
>> Nii saab ravida samamoodi.
Saate neid töödelda koos suunanäitajaks ka.
Selle asemel teeb sellega juhul analoogne asi
oleks massiivi 0 võrdub 1.
>> Kuid samamoodi, string määratakse
alguseks kus tema esimene märk on,
massiivi määratakse kui selle esimene element on.
Sest me teame, et me oleme tagatud, et need
hakkavad olema pidev blokeerib mälu.
See, mis võimaldab meil seda teha.
Me teame, et nad on pidevalt blokeerib mälu.
>> Nii et selles asjas dereferencing lihtsalt massiiv, mis ütleb meile,
OK, mine algust Sinu massiiv, mis on siin.
Nii saab see võrdne ühe.
Ja sel juhul, sõltumata oma massiivi tüüp on, kui sa seda värskendada üks,
see on lihtsalt nagu ajakohastamine selle järgmisele indeks.
Seda saab teha, sest sa tean, mida teie massiivi.
Nii et ta teab, kui palju uuenda oma pointer poolt,
mida aadress uuendada seda nii et sa oled järgmisel pesa.
>> Nii et see on lihtsalt teistmoodi kirjutamise massiivi 0 võrdub 1
massiiv 1 võrdub 2, massiiv Rühma 2 võrdub 3.
See on lihtsalt üks viis sellest mõelda.
Sest nad on pidev blokeerib mälu
saab viidata neile kas poolt massiivi notation--
mida ma isiklikult leida easier-- aga võibolla
Käsittelitpä see rangelt mälu aadresse.
Ja see on, kuidas sa teeks seda.
Liiki mitme samasuguse lahe asi, mida võiks teha
versus võibolla mitte midagi, mida sa oled tegelikult läheb rakendada.
>> Ma kasutan seda 61.
Te ilmselt ei pea muretsema liiga palju.
Aga kui sa oled huvitatud, võtta 61 järgmisel aastal.
Me oleme lõpusirgel poisid.
Ma tean, et see on pikk.
Dynamic Memory Allocation-- nii et me teame, et üks
asju, kui me rääkisime ajal meie esimene lõik koos,
me vaatasime swap funktsioon, kus oli
väljapoole meie peamine ülesanne.
Ja meil olid läbivad neid väärtusi mis olid tegelikult eksemplari.
>> Ja kui swap valmis täidesaatev, see lihtsalt vasakule virna.
Pea meeles, et meil on Kestab raami swap.
See jätab ja need väärtused jätan ta.
Ja nad olid läinud.
Me ei saanud midagi teha nendega ja olime kurb
sest me ei saa vahetada meie väärtusi.
>> Aga C, nagu ma mainisin, siis on palju võimu mälu.
Niisiis, mida saate teha, on teil võimalik eraldada asjad hunnik siin
mis jäävad sinna kuni sa neile öelda teisiti.
>> Nad on nagu hea lastele.
Nad seal viibida.
Nad ei jäta.
Nad seal, kuni olete nagu OK, võid minna ära.
>> Arvestades asjad virna, Kes-- nad on nagu ulakas lapsed.
Nad lihtsalt ära joosta, kui soovite seal olla ja siis nad on läinud.
Sa ei saa neid tagasi.
>> Nii hunnik on-- me ei kavatse rääkida malloc ja tasuta, mis
Ma olen kindel, et te poisid kuulnud loeng.
Ja see on põhimõtteliselt nii, on väga püsiv andmeid.
Nii saab hoida andmeid umbes nii kaua, kui soovite.
Mhm.
>> Sihtrühm: Kas sa define hunnik ja korstna?
Kas neile meeldib kohti panna asjad?
>> SPEAKER 1: Nii nad põhimõtteliselt lihtsalt-- nad
kuidas me nimetame lihtsalt mälu.
Nii hunnik on lihtsalt kohad, kus Mälu reserveeritakse dünaamiliselt
arvestades, korstna viitab rohkem korstnat raamid
mis on rohkem keskse funktsioone, mis on tegelikult töötab.
Sa tõesti ei ole kontrolli all.
>> Suur erinevus, pead kontroll üle hunnik, kui soovite.
Sul on vähem üle virna.
Stack sõltub funktsioone, mis on käivitatud,
ja millises järjekorras nad on joosta ja kuidas asjad tagasi.
Arvestades koos hunnik, kui me näeme, võib öelda,
OK, ma tahan, et see väärtus oleks umbes kuni ma öelda teisiti.
Sa ei tohi lahti saada.
Sa ei või seada tähtsamaks selle.
Sa lähed, et hoida seda umbes nii kaua, kui ma ütlen teile.
Sa saad olla ülemus kuhjas, arvestades, et stack-- võibolla kui sa
nagu finagle teed võite olla boss.
Aga mitte päris.
Ja tegelikult on see vaid mälestus.
See on lihtsalt erinevalt viidata mälu.
>> Külm.
Nii et, kuidas kontrollida oma mälu.
See on koos malloc, mis sa lähed, et saada kasutada.
Nii et see on lihtsalt lühike mälu eraldamisel.
See on kõik see on.
Seal on hunnik muud cool funktsioone, mis on alloc lõpus,
ja nad on eri asjad.
>> Nii et kui teil on vaja ladustamine mis vajab Kestab kauem oma praeguse funktsiooni,
et kui teie praegune funktsiooni jookseb minema,
sul on veel andmeid, mida sain seda, mida soovid kasutada malloc.
Mis sa initsialiseerida see hunnik.
Ja nagu ma ütlesin, ja hoida öeldes, siis hoian seda seal
kuni sa ütle teisiti, mis on tähtsam siin.
>> Nii et üks asi, mida tähele ja see on tavaliselt väga oluline,
on see, et Sizeof on super kasulik kasutada
sest sõltuvalt Masina näed,
see võib olla erinevas koguses mälu, et ta võtab.
Nii et sa alati tahad kasutada suurus nii et sa ei ole masin sõltuv,
nii, et oma koodi sõita iga masin.
>> Ja see on ainult osa kirjutamise hea koodi.
Kui see töötab üks masin, kuid mitte ühtegi teistega
kui kasulik oli oma programm?
Nii et tahad alati veenduge ning kasutada Sizeof.
>> Sihtrühm: Nii et nagu suurus 10 tolli [kuuldamatu]?
>> SPEAKER 1: See on suurus 10 ints.
yeah.
Nii et suurus ints tagasi kui palju üks int võtta.
Või suurus char, kuidas palju maksab üks char võtta.
Ja siis kui palju plokid selle sa tahad?
>> Nii et kui me tahame midagi et meil on võimalik salvestada 10 ints et.
Ja see töötab sõltumata masin, mis on lahe.
Niisiis, kuidas paljud bytes mis tegelikult annab teile?
Kiire matemaatika.
>> Sihtrühm: 40.
SPEAKER 1: 40.
Täpselt.
Nii et üks suur asi.
Pointer või malloc võib naasta null.
>> Nii et jällegi, alati kontrollida, et kas see tagastatakse null
Enne proovida ja midagi teha.
Kui püüad ja käivitatav see pointer nüüd,
see lihtsalt läheb segfault sest sa läksid ja püüdis
puudutada null, kui sa ei peaks olema.
Nii et alati kontrollida null.
Jällegi, kõik, mida saate teha.
>> See võib naasta null.
Seda saad tagasi null, kui sa oled kas läbi ruumi, või mingil põhjusel
ta sattus mälu viga.
Mõnikord lihtsalt tagastab null.
Nii et sa pead lihtsalt vaadake seda.
See on kõik see slide ütleb.
Ja siis, mis meil on siin on üleskutse vabastada.
Nii et samamoodi, et kui sa Faili avamiseks tuleb sulgeda fail,
kui te malloc mällu tuleb teil vabastada, et mälu.
Ja kutid saavad teha lahedaid asju.
>> Ja seal on programm, mida saab joosta kas sa oled kunagi lekib mälu.
Aga sa ei taha lekkima mälu.
See on tõesti halb.
Just segi ajama asju.
>> See on halb, et just nagu programmeerimine mõistlik disaini vallas.
Aga see on ka lihtsalt selline halb arvuti.
Nii lihtsalt tasuta asju kui sa malloc neid.
>> Te näete sümmeetria siin.
Super lihtne.
Just vabad ja siis Mis iganes on Sinu pointer,
mis iganes nime kursor on, ja see
hoolitseme vabastades seda sinu jaoks.
Külm.
>> Siis on meil see.
Nii et me lihtsalt läheb kõndida läbi selle programmi.
Ja siis poisid on tehtud.
>> Nii [kuuldamatu] lihtsalt peamine.
Nii et meil on mõned int * pointer.
Nii et meil on pointer et läheb hoidke ints.
Ja kui palju ints ta kavatseb hoida?
Lihtsalt üks.
Suurus int.
>> Me vaadata, kui osuti on null, sest see
on, me tahame öelda, ei tee midagi.
See on halb.
Nii et me trükkida mõni viga välja mälu, kõige sagedamini tagasi 1
kui kutid kasutatakse.
>> Ja siis on meil siin, meil dereference meie pointer.
Nii et see tähendab me ei kavatse hoida midagi asukohas meile antud.
Int * pointer või malloc, tagastab aadress, kus ta tühistas selle
mälu teile.
Nii et see on põhimõtteliselt andes sulle like-- kui te
mõtle kamp maja naabruses
mis sa tahad panna oma mööbel, malloc
on nagu OK, saad minna majja kolm.
Ja see annab sulle aadress maja kolm.
>> Nii et see just nüüd, see pointer kauplustes aadress
salvestab aadress oma maja.
* Ptr vahendid, OK, ma olen minu maja.
Külm.
Mul on vaja saada mõned täisarv.
>> Nii et sa palud, et keegi teile mööbel nüüd.
Nii saad mõned int.
Ja see paneb ta oma pointer kus see osutab.
>> Ja siis lihtsalt pildid läbi, siis kantakse kõikjal.
Ja veel alles.
Nii et see on nagu sa läksid sellele aadress ja sa nägid, mis oli seal.
Cool?
>> Ja siis muidugi me vabastada oma pointer.
Ärge unustage, et tasuta kursor.
Ära unusta, et kontrollida null.
Ärge unustage, et tasuta kursor.
Teil on kaks asja, mida mäletan see või et sa peaksid meeles pidama.
Jah.
Sihtrühm: [kuuldamatu] stuff niimoodi, char * s.
Miks me ei vabastama need?
>> SPEAKER 1: Hm?
>> Sihtrühm: Kas need nagu stringid?
Sa ütlesid, et stringid on nagu char * s, eks?
Nii et miks me ei tasuta stringid?
>> SPEAKER 1: Sa ainult vaba, kui sa oled mallocing.
Sihtrühm: Oh, kui sa mallocing.
SPEAKER 1: Nii malloc ja tasuta kahte asja
et sa peaksid alati koos.
f avatud, f lähedal, kaks asja siis peaks olema koos.
Neil kahel juhul kontrollige for null.
Jah.
>> Sihtrühm: Nii et tasuta on vaid võimaldades midagi muud
ladustatakse sinna pärast see programm on seda kasutanud?
>> SPEAKER 1: See on lihtsalt öeldes: OK, ma olen teinud seda.
Sul ei ole vaja, et hoida seda ümber.
Muidu arvuti lihtsalt meeldib proovida ja hoida seda seal.
Ja siis can't-- ta jookseb mällu küsimusi hiljem.
Tahad alati tasuta, sest ta ütleb arvuti, OK, ma olen
teha selle koha mälu.
Sul võib olla see tagasi minu jaoks kasutada hiljem.
Cool?
Jah.
>> Sihtrühm: Nii et me kasutasime% d lihtsalt sest kahekordne tuleb tagasi,
või miks on-- [kuuldamatu].
>> Sihtrühm: Kas te kasutate% i?
>> SPEAKER 1: Võite kasutada% i.
Kõik viimase hetke küsimusi?
Lase käia.
Sihtrühm: Ma lihtsalt on kiire küsimus.
Nii PTR muutuv, see on-- sarnane, int * ptr = malloc,
See on lihtsalt öeldes see on osutades koht memory--
SPEAKER 1: Kas sa tahad [kuuldamatu]?
Sihtrühm: --that on suurus of-- ei, see on OK.
Aga see on lihtsalt osutades koht mälu, mis on nagu neli baiti.
SPEAKER 1: Õigus.
Nii malloc suurus int ütleb, OK, ma lähen äravooluga
leida nelja baiti mälu teile.
Kui ta leiab, et neli baiti mälu,
annab sulle tagasi aadress kus see algab,
ja see, mida hoitakse aastal osuti või PTR.
Väga hea.
Te vaatate vähem segaduses, kui kõige inimesed, kui ma rääkida pointer,
nii et ma olen vist päris hea kohe.
>> Hea küll.
Nagu alati, kutid peaks olema kõik saanud oma pset2 klassid nüüdseks.
Ma tean, et on olnud mõningaid logisev asjad, kus ta ütleb, valem ei kehti
või midagi.
Kui te saate, et kõik Sinu klassid kehtivad minu poolel.
Nii et võin saata teile ekraanikuvasid oma klassid.
Lihtsalt andke mulle teada, kui ka siis, kui sa oled puuduvad kõik klassid või midagi
ei tundu loogiline.
Tulge minu juurde.
>> Ma olen super uhke teie üle poisid juba, et hoida see üles.
Ja on hea oma ülejäänud nädal.
Olen kindel, et ma näen mõned teie juures tööajal.