[00:00:00] [Muusika mängimine] [00:00:11] DAVIN: Olgu, kutid. Nii et see on läbivaatamise esimest viktoriini. Kas kõik valmis viktoriin kolmapäeval? ALLISON: Woo! Õpilane: Woo! DAVIN: Jah. ALLISON: Jah! DAVIN: See mees on valmis. See mees, kaks kätt, kena. Nii viktoriin läbivaatamise täna, see läheb olema umbes tund ja pool. Me läheme üle kõik suuremad mõisted, mida peaks teadma, et viktoriini. Me läheme üle mõned kodeerimist poolt näited, mis on igal viktoriin. Ja kui teil on küsimusi, võid vabalt tõsta oma käsi ja kõike niimoodi. Noh, logistika kohta Viktoriinis on praegu portaalis. Nii et me ei kavatse jagada inimesed üles erinevates ruumides. See põhineb oma nime. Nii et kui teil on küsimusi selle kohta, kus minna või mida materjal on, nagu, ametlik sõna, mis toimub olevat viktoriin, vaadata online. Ja see on kõik kursis. Nii et kui ei ole küsimusi Esiteks, me ei kavatse hakata. Ja siin on Allison. [00:00:56] [Claps] [00:00:57] ALLISON: OK, tänan, Rob. Hindan seda. Davin pidanud pöörasin sellele. See on mittetäielik nimekiri teemasid, nagu alati, kui Davin just ütles. Dokumentatsioonist Internetis umbes viktoriin null. Aga see on päris much-- see ainekava on kõik, mida me oleme läinud üle siiani. Kõik siin on aus mäng, samuti midagi muud mis võidi nimetada loeng. [00:01:21] Minu sektsioonis, siin on lihtsalt palju vaadata. Seal on paar harjutusi mis te poisid võiksid töötada. Aga enamasti on meil tõesti tahan saada Davin nende kood käsitsi harjutusi. [00:01:31] Nii et ma kavatsen sõita läbi selle. Kui teil on küsimusi, mind peatada. Tõsta käsi. Ma luban, ma ilmselt näha. Kui ei, siis lihtsalt laine selle ümber. Ma lähen rääkima kiire. Loodan, et kõik on OK sellega. [00:01:43] OK, erilist sõna, Davin ilmselt unustasid sirvida need slaidid. [Naerab] Sa oled hädas, mees. Nii näpunäited viktoriin null, harjutada kodeerimine paberil. Te ei kavatse saada mõned harjutada, et nüüd Davin, nii et sa ei saa täielikult ise. Ma arvan, et me oleme tegelikult toimub Nende kahe funktsiooni. Nii et sa pead olema hästi ette valmistatud seal. [00:02:04] Ole kursis sinu probleem komplekti. On olnud küsimusi eelmise viktoriinid mis pärib, näiteks koodi üles midagi väga sarnane Mario. Nii on väga tuttav Teie probleem seab, samuti kui küsimused palume alguses vormil et täidad, tahe teenida teid väga hästi. [00:02:20] Kas eelmise viktoriin all ajalisi piiranguid. Need testid on pikad. Aeg läheb väga kiiresti. Ja sageli, sa ei saa aru, kuidas kiiresti ta läheb, kuni te tegelikult pane ennast vastavalt neile piiranguid. Nii et kui te ei saa lihtsalt välja jäetavad osad, tead, 75. minutil kas täna õhtul või homme võtta üks neist viktoriinid alla et siis oleks palju parem. [00:02:41] Ja ka luua oma viide lehel. Pea meeles, et teil tekib üks lehekülg ees ja taga võrdlusena oma viktoriin kolmapäeval. Loomine, mis on suurepärane võimalus õppida. Kõik, mis sul on probleeme koos soovite lisada seal. Midagi, mis oma TF olnud, nagu see on tõepoolest oluline. Sa peaksid teadma, see on äkki asjad teil seal kui sul ei ole neid meelde. Isegi kui sa ei tea neist tegelikult Noh, mõnikord võttes ta seal on lihtsalt selline mugavus sinu jaoks, mis ma tean, viktoriinid on stressirohke. Seetõttu on igasugune mugavus saad aidata. Olgu, ka, saan magada ja süüa ja meeldib tavaline asjad et me ütleme teile viktoriine. [00:03:16] Nii algab off lihtsalt, andmete tüüpi ja suurusega. Nagu ma ütlesin, see lihtsalt läheb tuleb mulle viskamine palju asju siin, et sa peaksid teadma. Nii et meil on meie tähemärki mis on ühe baiti, ints mis on neli baiti pikk pikk, mis on kaheksa baiti. Põhimõtteliselt, see on lihtsalt teile tahan hoida suuremat täisarvu. Ujub, mis on neli, paarismäng, mis on kaheksa. Jällegi, lihtsalt annab sulle rohkem ruumi oma ujukid. Ja siis kirjuta täht, nii et kõik Osuti 32-bit masin, mis on kõik, mida poisid vajavad teada, on neli baiti. [00:03:44] Nii et kõik asjad, mida peaks tea, äkki asjad soovite avaldada Näete lehel. OK, binaarne konverteerimine kahekomponentsete, muundamise et kuueteistkümnendsüsteemis, edasi-tagasi, kõik asjad, mida sa peaksid teadma. Nii et binaarne koma. Te soovite võtta kiire minut ja proovida aru saada, kõik need ja siis öelge mulle, mida nad on? [00:04:06] Mul on ka kommi minu kotti, et igaüks kes vastuseid saab kommi, muide. Ja mul on palju seda. Lubage mul rüütama see. Ma annan selle Gabe. Nii saab käsi välja kristalliseerunud kes on tore ja koostööaldis. [00:04:21] OK, ma nägin käsi seal taga. [00:04:26] Õpilane: Jah, esimene on 42. [00:04:28] ALLISON: Jah, esimene on 42, korrektne. Õpilane: [kuuldamatu]. [NAER] ALLISON: teine ​​üks, seal juba kollane? Õpilane: 110010. ALLISON: Õige, ja see Viimane, siia alla alt? Samuti Jah, tead tahan? Just Toss välja kristalliseerunud. Kuidas kommid kõigi jaoks? [00:04:46] Õpilane: [kuuldamatu], kui me teinud. [00:04:47] ALLISON: Tasa. Ja siis viimane. Kes tahab vastata? Just sinna. [00:04:52] Õpilane: 11100. [00:04:54] ALLISON: 11100, vaata seda. Palju õnne, head tööd, kõigile. OK, igaüks omamoodi aru protsessi seda teed? Sa oled, läheb binaarne koma Muide ma pigem seda teha, kirjutab välja volitusi 2. Nii et ma ütlen, OK, 0 korda 2-0, nii see on 0, 1 korda 2 esimesele, on 2 läheb aastast nii. Kas keegi tahad, et selgelt läbida näiteks binaarne? OK, lahe. [00:05:28] Decimal kahekomponentsete on väga sarnased. Ma pigem kirjutada volitusi 2. Alusta üks, mis on suurem, kuid ei lähe mööda kohaga mida te otsite. Ja siis millist tööd teed tagasi liitmise asju kui vaja. [00:05:42] Ja seejärel Lisaks see nagu tavalised lisaks. Kui sa kunagi Kui sa oled lisades kaks 1s, siis ilmselt muutub 2. 2 binaarne on nüüd 1 0 nii et sa pead kanda oma 1 järgmisesse kolonni. Külm. [00:05:59] Kuueteistkümnendsüsteemis, see võib olla midagi mis on veidi vähem tuttav. Nii nagu Rob oli lihtsalt mulle eelnevalt tema trikk selle on lihtsalt jagada see üles nelja baiti tükkideks, OK? Bits, vabandust. Näed? Tänu Rob. See on põhjus, miks sa siin oled. [Müra] OK, nii et me lihtsalt lahku nelja bitti tükkideks. Nii kahendfailid et kuueteistkümnesüsteemis me vaatame esimese 4, mis on see, kui meil on neli 1s rida, mis number see, mis sümboliseerivad? [00:06:25] Õpilane: F. [00:06:26] ALLISON: Nii sel juhul Mis on 11111111 või-- jah? Õpilane: FF. ALLISON: Perfect, FF. Nii suur, kommid teile. Nüüd, kuidas kuueteistkümnendsüsteemi kahekomponentsete oleme lihtsalt mõtle selle omamoodi tagurpidi. Iga number või täht, oleme meie kuueteistkümnesüsteemis lihtsalt teisendada see oma nelja natuke [Naerab] oma nelja natuke vahetamisega. Nii 5, antud juhul, mis on 5, kui me esindavad seda neli bitti? [00:06:58] Õpilane: 010? Mm-hm. Ja siis, mis on tegelikult 10 oleks? 1010. Nii et meil on, et siin. Nii vahetustoiminguteks kuueteistkümnendsüsteemis ja binaarne tegelikult ei ole nii halb. Kui te vaatate seda neljabitist tükkideks, saab olema kuldne. Everyone-- jah? [00:07:19] ROB: See on rumal, aga ma alati meeles pidada Kuna tema pidi olema 10. Ja binaarne on lihtsalt 10 10, so-- [00:07:26] ALLISON: Ah, seal me läheme. [00:07:27] ROB: Hei. [00:07:28] ALLISON: Hei, komme Rob. On mitte-šokolaadi värk seal. Nii et teil on mõned. Nii ASCII matemaatikat. Käitu. Nii ASCII matemaatika, kui te poisid ilmselt hästi mäletan p seatud 2 VISIONEER ja Caesar, sa tegid palju see. Pea meeles, et tegelased on põhimõtteliselt ainult numbrid. Nii et me saame teha matemaatika nendega, just nagu me teeme matemaatikat ints. [00:07:54] Nii et meil on natuke lihtne asi siin. Meil on mõned, mis on vormindatud 65. And B võrdub ASCII väärtus pluss 1 char C võrdne D miinus 1, ja char D võrdub 68. Siis me print kõik need, nagu me näeme siin. Ja kas keegi mulle öelda, mida see välja printida? Õpilane: [kuuldamatu]. ALLISON: Täpselt nii, üks asi, teate, et me väljatrükk tähtedega iga kord, siin. Meil on määrava kuigi A ja B on ints kui me kuulutasime neile üle. Oleme nende trükkimise kui märgid protsenti C ja meie printf avaldus, nii nad kõik prinditakse tähemärki. Ja muidugi, ASCII väärtus 65 tahet printida A. ASCII väärtus pluss 1 oleks 66, mis uhked, et B. Nii et tegelikult me saada A B C D Kõik hea on? Kas on küsimusi? Awesome. [00:08:52] OK, ulatus. Nii ulatus on ilmselgelt väga Oluline on mõista, siin. Palju teile, kui teil on koostamisel tehtud vigu, ja ta ütleb, et sa ei pea juurdepääsu mõnele muutuja see on ilmselt, sest sa määratletud jooksul loop ja siis proovisin seda kasutada välja, või vastupidi. [00:09:12] Nii ulatus keskmes, ta lihtsalt määrab, kuhu ütleme muutuja on olemas, kui me on võimalik muuta seda, kus me saame seda kasutada. See on lihtsalt selline öeldes on need ainsad kohad, kus teil on juurdepääs Selle muutuja. [00:09:26] Nii et kahe õppesuuna et me räägime ajal klassi on ülemaailmne ja kohalik. Nii et globaalsed muutujad me räägime kui sa defineerid neid ülal peamine. See tähendab, et kogu oma Programm on juurdepääs, ja see on olemas nii kaua kui programm jookseb, OK? Kohalik tähendab, et see on rohkem piirdu piirkonnas. Nii et kui teil on konkreetsed ülesanded nagu swap, me räägime alati. Me räägime alati vahetuslepingu ja B. A ja B eksisteerivad selle funktsiooni. Nad ei ole kusagil mujal. [00:09:56] Samuti, kui teil on, kui avaldused või silmuseid. Alati on meil, näiteks silmus meil int I võrdub 0. Meil on mõned seisukorras ja me ajakohastab seda. Mul on olemas ainult jooksul traksid selle jaoks silmus. Kui üritate kasutada seda mujal, Teie koostaja oleks kisa sind. See oleks nagu, mida sa üritad teha? Seda ei ole olemas. Nii et kahe eri liiki ulatust. Kas on mõtet kõigile? [00:10:23] Nii näiteks siin, see on vaid mõned lihtne programm. Mida te poisid arvate, on juhtub igas punktis et me püüame printida? Nii et see siin, mis juhtub? Õpilane: See prindib kolm. ALLISON: Õigus. Seda saad printida kolm. Aga siin? Õpilane: See ei tööta. ALLISON: See ei tööta. Sa oled välja ulatus, eks? Kohalik muutuja ei ole olemas väljaspool neid traksid, eks? Ja siis kuidas on lood siin? [00:10:56] Õpilane: [kuuldamatu]. [00:10:57] ALLISON: Mis on? Rob minna. [00:10:59] ROB: ma just ütlesin. Global muutujad peaks olema globaalne alakriips muutuv. [00:11:04] ALLISON: Ah, jah, vabandust. Thanks, Rob. Rob on nagu meie resident tõlkija. Ta lihtsalt kisa meid, kui me seda vajavad. [Naerab] Jah, see peaks olema globaalne alakriips muutuv. Nii et kui oletada, et oli ülemaailmne alakriips muutuja, mis juhtub siin? Õpilane: See töötab. ALLISON: Seda saad tööle. Nii et see saab printida, lihtsalt väga lihtne näide. OK, prototüübid. Nii et ilmselt on meil tõesti rõhutada kutid teha ülesandeid, kui ta mõtet oma programmides. Aga muidugi, kui sa teha oma funktsioone, tavaliselt saate määratleda neid pärast peamine. Ja võite proovida helistada neile peamine. Ja kui sa ei kasuta prototüüp, oma kompilaator kisa sind. [00:11:46] Prototype on põhimõtteliselt lihtsalt ütlen oma koostaja et mul on see funktsioon main. Ma lähen kutsun seda enne, kui ma seda defineerida. Lihtsalt pea vastu. Ma luban, et see on määratletud, ja sa on kõik, mida vajate. [00:12:00] Niisiis, kuidas me seda teeme, on lihtsalt teie tagasi tüüp, oma funktsiooni nimi, oma panuse nimekirja. See on põhimõtteliselt esimese rea oma funktsiooni deklaratsioon. See on tõesti kõik see on. Kuid see on alles Üldiselt liiki vormi. [00:12:14] Nii et meie näites siin, mis te poisid peaks näinud lõik mingil hetkel on meil mõned int kuubik, et mone int sisend. Ja meil on meie peamised funktsioon, mis nõuab kuubik. Ja kuubik on defineeritud asjaolu. [00:12:28] Nii et kui meil ei oleks int kuubik sisend tipus, kui me kutsusime kuubik jooksul peamine, meie koostaja oleks vihasta meid. See oleks nagu, mida Millest sa räägid? Cube ei eksisteeri. Ma ei tea, mida sa küsida. Ja ma lihtsalt peatus. [00:12:43] Aga kuna me tegime prototüüp tipus, oleme öelnud, sa tead, kui sa näed kuubik, ei muretse selle pärast. Ma luban, et see on määratletud hiljem. Ja lasen teil teha seda, mida sa tahad. Nii et kui teil on kunagi funktsioon mis on välja kuulutatud pärast seda nimetada esimest korda, peate on see prototüübid ülaosas. [00:13:01] Jah? [00:13:02] ROB: See on ruuduline, ei cubing. [00:13:04] ALLISON: Oh jumal. Ma ei have-- Gabe, ma arvasin sa olid meie toimetajad. OK poisid, kanda minuga siin. Loodan, et kõik on üha idee. OK, nii et see peaks olema on ruuduline, ei kuubis,. Aga mõte jääb samaks. Iga funktsioon, mis me kutsudes pärast Tegelikult peaks olema prototüüp. Igaüks hea on? Muid kirjavigu? OK. Iga kirjavigu siin enne kui me alustame, Rob? [Naerab] OK, nii structs. Põhimõtteliselt structs võimaldab teil luua oma andmete tüübi. Nii palju nagu int või char või float, see on lihtsalt üks tüüp. Mulle meeldib mõelda seda, nagu, luua oma andmete tüübi. Nii et see võimaldab teil seda teha. Ja ta omab erinevaid andmeid. [00:13:56] Nii et kui te mäletate, massiiv, me saab omada ainult asjad samaliigilised. Structs võimaldab meil olla mitmeid asjad erinevad. Nii et kui siin, me on struct nimetatakse Student, nimega siin allosas. Ja meil on mõned int id ja mõned string nimi. Nii et see on lihtsalt üks andmetüübi. Meil on nüüd andmetüüp nimega Student. [00:14:20] Niisiis, kuna me ei mõtle see lihtsalt üks andmete liiki, saame kuulutada muutujad kui me tavalist. Nii et selle asemel, et lihtsalt võttes, nagu, int üliõpilane, meil on lihtsalt üliõpilane, üliõpilane 1. Oh, vaata. See on Rob. Nii et siin me kuulutatakse struct või muutuva nimetatakse õpilane 1 tüüpi õpilane. Nii et see saab olema id ja nimi sellega seotud. [00:14:45] Ja kuidas me kasutada neid elemente meie struct on koos dot operaator siin. Nii antud juhul me deklareeritud mõned õpilane 1. Me määratud ID olema 1. Ja me määratud nimi olla Rob. OK, kõik hea on? Kasutage seda lihtsalt like-- jah? [00:15:06] Õpilane: Jah, typedef-- kui me peame kasutama typedef? [00:15:09] ALLISON: Nii typedef lihtsalt ütleb selle-- Rob, sa on võimalik parandada mind selles kas ma olen wrong-- kuid typedef on lihtsalt tegelikult kuulutatakse seda tüüpi, mida saab kasutada, eks? [00:15:19] ROB: Jah, see on põhimõtteliselt nii et see on lihtsalt luua alias või hüüdnimi tüüp. Nii et sa võid kirjutada, et [kuuldamatu]. Nii [kuuldamatu] on olemas, ja nüüd me lihtsalt [Kuuldamatu] abil täpselt sama asi. Ja nii siin, me kirjutada, ma arvan, mõned struct tüüp 2 [kuuldamatu]. Nii et see on lihtsalt hüüdnimi teatavat tüüpi. [00:15:40] Õpilane: String [kuuldamatu] raamatukogu oli kirjutatud üles nagu char täht. [00:15:51] ALLISON: Meie eesmärkide siin kui sa kuulutab struktuure, lihtsalt ei typedef struktuure. OK, nii et varem on see lihtsalt tavaline muutuja siin. Me kasutada seda punktiga. kui meil on viit struct, saame tegelikult kasuta noolt, mis on päris lahe. [00:16:10] Nii et kui meil on viit üliõpilane 1, mis on tüüpi õpilane. Pea meeles, et oma pointer ehitus, soovite iganes tüüpi kursor osutab, et olla alguses. Nii et meil on mõned õpilane 1 siin. Ja kuna see üliõpilane 1 nüüd otsaga, saame tegelikult minna õpilane 1 nool nimi asemel dot, sest see on osuti, ja määrata Rob. Ja nüüd, kui me tahame muuta Rob kuni Davin, see lihtsalt näitab teile teistmoodi seda teha. [00:16:43] Nii et selle asemel, kasutades nool, siis võib also-- ma lõpetan selle ja siis võtta, et question-- võid teha ka viide õpilane 1. See ütleb nagu minna mis iganes on üliõpilane 1, mis oleks meie õpilane struktuure. Juurdepääs seda dot ja element mis sa tahad, ja siis ümber jaotada see. Seal oli küsimus. Õpilane: Jah, jah, siis kuidas tulevad teil on kasutada [kuuldamatu] kui sa oled teeb õpilane star ilma [Kuuldamatu] tudeng? ALLISON: Kuna see loob pointer. ROB: Me läheme sellest rääkida. ALLISON: Me läheme rääkida sellest hiljem vaadata. Nii lihtsalt kinni hoida, et mõte. Kui see ikka häirib teid Lõpuks tulevad rääkima üks meist. [00:17:20] Nii et need teha täpselt sama asja. Me lihtsalt näitab teile kaks erinevaid võimalusi, kuidas seda teha. Student 1 nüüd osuti, nii pääsete Nimi element jooksul struct noolega. Või saate käivitatav kursor, ja siis kasutada seda nagu tavaliselt. Kas see on mõistlik iga üks? Kui kogu pointer asjad on vähe segane, Gabe räägivad, et ja siis võib-olla see mõttekam. Jah? [00:17:46] Õpilane: Jah, jah, siis kuidas on Selle erineb? ALLISON: eelmine? Seega saab üliõpilane 1 selles juhul ei ole osuti. See on lihtsalt teie tegelik struktuure. [00:17:54] Õpilane: OK. [00:17:55] ALLISON: käesolev üks on viit struktuure. [00:17:58] Õpilane: OK, kuid teeb seda liiki lõpuks töötab sama [kuuldamatu]. [00:18:02] ALLISON: See tõhusalt toimib sama. Teie süntaks on lihtsalt erinevad. Õpilane: OK. [00:18:05] ALLISON: Jah, nad on sama efektiivselt. See on lihtsalt sõltuvalt kontekstist, võiksite üks teiste üle. Jah? [00:18:11] Õpilane: Kui te seda teete viiteid 1-- ALLISON: Mm-hm? Õpilane: miks sa on sulgudes? ALLISON: Kuna üliõpilane 1 on osuti. Nii et sa pead veenduge, et olete lihtsalt dereferencing osuti. [00:18:22] Õpilane: OK. [00:18:23] ALLISON: Nii et selles asjas, Sulgudes ümber tähendab, et sa dereferencing õpilane 1. Nii et sa lähed kus õpilane 1 punkti, mis on oma struktuure. Nüüd võite mõelda seda nii, et struct, nii saame kasutada meie tavaline dot tööd. Muid küsimusi? Cool, awesome. [00:18:48] Nii et viimane asi, ma arvan on minu viimase slaidi woo! OK, nii et ujukoma ebatäpsus. Me rääkisime lühidalt Selle käigus loengu. Põhimõtteliselt on meil lõpmata palju reaalne arv. Ja kui keegi teile poisid armastan matemaatikat, seal on igasuguseid lahedaid asju koos meiega. [00:19:05] Aga seal on lõpmata palju reaalne arv. Aga nad on ainult piiratud paljud bitti, mis meil on. Nii et sa oled alati läheb on ebatäpsus, on kõik. Ja see on see on lihtsalt selline nagu midagi, mida sa peaksid teadma. See, nagu me võime küsida, miks ei ujukoma ebatäpsus on olemas? Nii lihtsalt midagi, mida sa peaksid teadma. Ja et ma keeran selle üle, et osuti. [00:19:27] Binky: Tere, kutid. Minu nimi on Binky. Ma ei kavatse rääkida sellest. Jah, nii et osuti on tegelikult minu lemmik osa selles muidugi. Nii lihtsalt selgeks teha, mida Allison rääkisin siin, nii et põhjus miks-- ainult siin midagi Suur erinevus oli viis me kuulutame asju. Nii et õpilane star tähendab see on viit üliõpilane. Arvestades, et slaidi enne, üliõpilane tegelik struktuure, nagu tegelik üliõpilane, mis sisaldab mõnda neist asjadest. [00:19:54] Ja põhjus, miks me tahan mina-- jah, Davin? [00:19:57] DAVIN: Mis nool tähendab? [00:19:58] Binky: Nool vahendid täpselt sama nagu see. Nii et sa tõesti ei pea nool. Like, kui sa oled ainus programm C, võid lihtsalt kasutada seda. Vabandust, ma ei ole, mis see on. Sa võid seda süntaksit. [00:20:14] Kuid mõned inimesed, kui need projekteerimisel C, nad arvasin, et inimesed kasutada, et süntaks nii palju, et nad meeldib lihtsalt tulla koos süntaksistruktuuri ta. Ja see toimus vormis see nool. Ja see on tore, sest see sümboliseerib midagi nagu me tegelikult järgmine see nool, see pointer, poole ruumi mälus. Ja kui me sinna jõuame, me tahame vaata nimele, et õpilane, kui see on mõistlik. OK? [00:20:43] Nii et see on täpselt sama. See on täpselt sama asi nagu see. Nad saavad koostatud täpselt sama, eks? Ja põhjus siin, miks me malloc midagi on, sest sel juhul Meie muutuja on tegelikult lihtsalt pointer muutuja. Nii et meil on ainult mõned ruumi mälu, mis hoiab osuti. Me tõesti ei ole mingit ruumi mis hoiab tegelikust struktuure. [00:21:06] Niisiis tuleb seda teha kahes etapis. Me peame looma mälu panna struct sisse. Ja meil on luua mälu panna kursor. Nii et nad on põhimõtteliselt kaks erinevaid muutujaid siin. Üks neist on tüüpi õpilane, välja arvatud see ei ole tegelikult veel nime. Ja teine ​​on tüüpi õpilane star. Ja siis õpilane 1 punkti seal, kui et on mõtet. OK? [00:21:28] Nii et põhjus, miks me kasutame osuti on, sest kõik in arvuti iga muutuja arvutis on kaks asja. Ta on oma väärtus. Ja see on tema aadress. Ja hea võimalus ettekujutus on olemas palju probleeme, kui proovida kasutada funktsioone. Ja me ei kavatse proovida vaata ühte nendest. Nimelt läheb mõtle mälu kastid. [00:21:50] Sa alati mõelnud muutujad kui sa ütled na võrdub 5. Sa arvad, et panna 5 karpi. Mis siis, kui soovid määrata et int funktsiooniks? Sa lihtsalt pass-- ma ei sead ühendit väljakirjutada x funktsiooniks. Aga mis juhtub, on Tavaliselt kui inimesed, siis arvaks midagi sellist ma olen kulgeb kasti inimene. Ja see ei ole tegelikult juhtuda arvuteid. Mis juhtub, on teil kopeerida väärtus Karbi selle isiku kasti. [00:22:17] Nii et see, mida ma öelda tahan on see, et kui teil on funktsioon-- sorry-- siin kui meil on funktsioon nagu viis üles seal, kui püüad läbida muutuja, see lihtsalt läheb kopeerida. Kui initsialiseerida nx on 3, siis läheb kopeerida selle väärtus kuni muutuja seal üleval. OK, ja see on selline põhjus miks tahame kasutada vihjeid. Kuna asemel andes lihtsalt raha, selle asemel, et lihtsalt kulgeb lihtsalt väärtuseks funktsioon, tahame edasi viitega. Mida me nimetame pass viidates on selline anda kasti funktsiooni nii, et funktsiooni saab ka muuta väärtuste et kasti. [00:22:53] OK, lihtsalt mõned põhilised pointer stuff on luua viiteid, sa lihtsalt kuulutada see tüüp ja paned star kohe pärast seda. Ja tüüp on lihtsalt mida sa osutavad. Nii et kui see on int star, sa osutades int. Kui see on char täht, sa osutades diagrammi. Ja kui see on õpilase star, sa osutades üliõpilane. OK? [00:23:08] Ja nad on kõik 4 baiti pikk. Kuna see muutuja see ei ole tegelikult pea olema char, int või üliõpilane. See on jäänud pidada ainult aadress. Sellepärast nad kõik 4 baiti kaua tavalise 32-bitine masin. OK? Nii et siin, x on muutuja, mis osutab int. y võrra char. z punktid et sularahaga. Kõik küsimused siin? Külm. Ja seal on kaks erinevate sümbolitega neil meeles pidada, kui tulevad pointer. Nii viitamine ja dereferencing on suured. Nii-märk on muutuja nimi annab sulle? Õpilane: Aadress. Binky: Aadress. Nii et kui teil kuulutada int võrdub 5, siis ampersand ja annan sulle aadressi. Ja tegelikult võite proovida printida, et ja vaata mida aadress mälu Sinu muutuja. Ja siis dereferencing-- nii et oli viitamine, saada aadressiks dereferencing on täpselt vastupidine. OK, nagu alati on vastand rajoonis star on vastupidine ampersand. Nii dereferencing vahendid sinna minna. Nii et kui sa annad star-- I ei sead ühendit väljakirjutada 50, mis on kavatsen proovida minna aadress number 50 sees arvuti. OK, ja miks me näha et nad on vastandid? Sest see, mis juhtub, kui sa seda teed midagi star-märk? Noh, ampersand annab Sulle aadress muutuja, aadress. Aga täht tähendab minna. [00:24:35] Mis juhtub, kui sa minna aadressile? Sa lihtsalt saada, eks? Nii läheb aadress on sama asi nagu. Sellepärast nad tavaliselt nimetatud same-- see ja see on osutatud vastandina ettevõtjatele. OK? Nii lahe. [00:24:53] Kapoti all on näiteks kui me kuulutame int x võrdub 5 meil on muutuv. Ja pidage meeles, et ma ütlesin iga variable-- ja see on hea hoida mind-- on kaks erinevaid asju, mis on seotud. See on adresseeritud, ning väärtus. OK? [00:25:07] Nii et väärtus on sel juhul 5. Ja aadress on-- ütleme, ma olen teha midagi up-- on 0x04. Ja ainus põhjus, miks me tavaliselt esindavad aadressid kuueteistkümnendsüsteemis on üks, sest see on nagu hea. See läheb hästi binaarne. See on lihtne teisendada ja binaarne. Ja see ei ole liiga suur, kui sul on väga suur number. Nii me meeldib kasutada kuueteistkümnendsüsteemi trüki aadressi. Aga ma võiks olla seda täisarv. See on hea. [00:25:32] Ja nii see on aadress 4 ja väärtus 5. Ja siis ma ütlesin int star pointer. Nii et see on teist tüüpi, teatamata. Int star pointer võrdub aadress x. Mis saab olema väärtus PTR? See saab olema aadress x, siia alla. OK, nii et raha läheb olla sama aadress. See on ülesanne tegutseda ma teen. Ja siis PTR läheb on oma aadress, mis osutub, antud juhul 8, OK? [00:26:03] Ja siis ma luua uus täisarv koopia. Ja ma ütlen, int koopia võrdub sinna minna. Niiet, mida PTR osutab. Noh, mis see PTR on? Ptr on 0x04. Mis juhtub, kui ma üritan sinna minna? Ma leida mees, kes on aadress x ja kellel on aadressi 4. Ja kellel on lahendada neli on x. Kas on mõtet? Jah? [00:26:28] Õpilane: Sel juhul on kursorit korstna? [00:26:32] Binky: Sel juhul it's-- hea küsimus. Ma ei mõtle seda tehes üles need aadressid. Aga kui see on, nagu kõik need on muutujad, siis x läheb elama in-- kõik läheb elama pinu. Nii et kõik läheb olema suunaga korstnat. Tarvitseb ainult saada hunnik kui hakkate kasutama malloc, eks? [00:26:52] Nii et kui te mäletate stack on iga kord helistate funktsiooni oma programmi, jms, peamine näiteks või mis tahes muud ülesanded, nagu printf. Kõik muutujad on hakka kasutusele freimi. Ja nad ei kavatse saada nagu kuhjatakse pakis. Seda nimetatakse pinu. Ja kõik need muutujad ei kavatse olla seal. Ja heap-- ja me lähme rääkida rohkem sellest later-- kivikangur, kus kõik dünaamiliselt eraldatud mälu elu. Cool? [00:27:20] Me läheme sellele slaidile. Jah? [00:27:22] Õpilane: miks ei ole int koopia naasmist 0x04? [00:27:27] Binky: Miks ei ole int koopia naasmist 0x04? [00:27:30] Õpilane: miks ei ole, et [kuuldamatu]? [00:27:32] Binky: Sest see, mis on väärtus PTR? [00:27:37] Õpilane: 0x04. [00:27:38] Binky: 0x04. Mis juhtub, kui te lähete 0x04? Mida sa saad? [00:27:41] Õpilane: Oh, OK. Binky: Näed? Õpilane: Jah. Binky: Nii saad 5. Nii koopia läheb on 5, kui see on mõistlik. Jah? [00:27:49] Õpilane: Kas oleme saanud 5 väärtuse lahter [kuuldamatu] Kui me paneme int kopeerida [kuuldamatu]. [00:27:55] Binky: Int-- oleksime, jah. See oleks teinud päris palju sama asi. Aga see, kuidas me ei liigu pöörduda funktsioone. Ja see on lahe asi me teeme kohe. [00:28:06] Nii et selline harjutus alati kerkib nüüd-- väga tavaliselt kerkib viktoriine. Nii et see on tõesti hea, et proovida Selleks, et selline asi ise. Nii et proovige jälgida, mida aadress on ja tahan muutujate väärtused on igas punktis. Nii et see on täpselt mida me teeme. Siin on sammud, üks, kaks, kolm, neli, viis. Üks, kaks, kolm, neli, viis. Ja me ei kavatse jälgida väärtuste x ja a. [00:28:34] Nii et mida see teeb, kui see on lollakas kood me üritame teha viis. Nii et me üritame saada muutuv ja muuda selle väärtus 5. Ja pidage meeles, mu analoogia võttes kasti ja jagab kasti keegi? Nii et peamine on see kast, mida nimetatakse x. Ja see sisaldab väärtust 3. Ja ma üritan anda Selle kasti viiele. [00:28:58] Ja ma tahan, et viis muuta väärtus selle lahtri 5. Ja siis ma lihtsalt printida x väärtus. See on see, mida mu funktsioon-- see on see, mida ma üritan teha. Ma lihtsalt üritan uuendada väärtuse x 5. Kas see on selge, milline funktsioon teeb? [00:29:16] OK, mis siis saab olema x väärtuste ja siinsamas, esimesel real, vahetult enne esimest LINE ma say-- programmi? [00:29:27] Õpilane: Arvatavasti prügi. [00:29:28] Binky: Just prügi värk. Nii et ma lihtsalt panna N / A. Nii me tõesti ei tea. Nagu, ei ole isegi veel olemas, sest me ei ole kutsutud viis. Int ei deklareerita. Ja x on olemas siin, aga me ei ole tõesti määratud mingit väärtust, seega OK? [00:29:46] Ja siis, mis saab olema x väärtuse ja arvu kaks? [00:29:54] Õpilane: [kuuldamatu]. [00:29:55] Binky: Nii x saab olema 3. See on lihtne, sest me määrates 3 ta. Ja ikka ei ole olemas sest lihtsalt elab viis. Nii et ma lähen on 3 ja mitte midagi. või nagu prügi, mis iganes, tegelikult ei määratletud. Ja nüüd on see oluline joon. Siin me läheme tegelikult helistada viiele. Ja pidage meeles, mida ma ütlesin. Me ei liigu kasti. Me lihtsalt kopeerida väärtus kasti teise kasti. See on kõik arvutid ei kopeeri asjad ühest kohast teise. [00:30:27] Nii et viis, mida ta tegelikult teeb see on koopiate väärtus x. Mis saab olema siin? Väärtused x ja a. 3 ja 3, siis me lihtsalt kopeerida see üle x. Külm. [00:30:45] Nüüd me oleme siin. Ja nüüd me läheme uuendada võrdub 5. Mis juhtub rida neli? [00:30:55] Õpilane: [kuuldamatu]. [00:30:56] Binky: saab ajakohastada, kuid x ei saanud uuendada. Kuna x elab ikka peamine, see on täiesti erinev ploki mälu. On erinevaid muutuja. on veel üks muutuja. Nad juhtumisi sama väärtusega, sest ma kopeeritakse väärtus x. Aga nüüd, kui ma võrdub 5, siis tegelikult ei mõjuta x kuidagi. See on keerukam osa. Kas on mõtet kõigile? Jah? Õpilane: Veel üks küsimus, siis on 3. Miks already-- oh ei, see on 3. Vabandame, rääkimata. Lugesin 5. [00:31:29] Binky: Jah, 3, 3. [00:31:30] Õpilane: [kuuldamatu] jah. Binky: Ja siis anname 5 , kuid ei ole tegelikult muuta x. Hea? Õpilane: Jah. Binky: Jah? Kas oskate selgitada uuesti, kuidas saab kopeerida [kuuldamatu]? [00:31:42] Binky: OK, nii et kui te helistate viis x, nii et see rida koodi siin. viie x, mis on x? x on vaid 3 sel hetkel, eks? Nii võid lihtsalt mõtlema paneb 3 siin ja unustades x. Lihtsalt pane 3 siin. Like, me ei kavatse kopeerida väärtuse x int see on seal üleval. OK? [00:32:13] Nii et x väärtus on 3. Me läheme eksemplar 3 üle. Ja kõik see muu ploki mälu, see teine ​​muutuja nimega on 3, samuti. Kas on mõtet? Jah? [00:32:25] Õpilane: Kui sa annad viis nagu on see nagu täisarv x asemel, oleks, et fikseerida kõik? [00:32:32] Binky: Kui see on integer-- ei, mis ei lahenda kõike. Nii et see on väga hea küsimus. See ei ole tegelikult oluline, mida te nimetate neid muutujaid. Jällegi, see on küsimus ulatuse, sest nad ei ole sama x. Nad on täiesti erinevate ruumide mällu. Õpilane: [kuuldamatu]. Binky: Nii et see ei ole tegelikult oluline, mida sa kasutad neid. See ei lahenda asju, OK? Veel küsimusi? Jah? [00:32:55] Õpilane: Kuidas on tagasi number viis [kuuldamatu]? Binky: OK, me ei ole seda teinud veel. Lähme number viis, siis. [00:33:03] Õpilane: [kuuldamatu]? [00:33:04] Binky: Mis on? [00:33:05] Õpilane: Kas teil on tulu üldse? Binky: Meil ​​ei ole Vastutasuks ei Peamiste. Aga peamine tulu 0 automaatselt kui sa tagasi ei tule midagi. Jah? [00:33:15] Õpilane: Kas teete main-- või võiks olla teie viis lendu? [00:33:24] Binky: Meil ​​võiks olla viis tagasi, jah. Aga siis oleks meil määrata x võrdub tagastatav väärtus üle viie, mis oleks veidi erinevat programmi. See töötaks. Aga mida me tahame teha, on see, mis on nimetatakse muutus midagi paigas. Nii et me tahame tegelikult muuta, et kasti ja ei muretse umbes võttes tagasi väärtuste või midagi. OK? [00:33:46] See on nagu swap funktsiooni David oli loeng, välja arvatud ma olen ainult tegelevad ühe muutuja. Ja ta kasutas kahte, nii int a ja b siis ajutine muutuja ja tühi-tähi. OK? Mis on viimane rida? Pärast viis tagasi, see on lihtsalt läheb minema. Me ei ole enam, ja ainult x ikkagi elada. [00:34:10] Ja arva mis? x ei muuda selle väärtus, Lõppude lõpuks, sest me oleme ainult muutuva väärtusega. Sellepärast x oli 3 kogu. OK? Väga hea. Nii et see programm ei ole saavutada seda, mida me tahtsime. Nüüd seda parandada. [00:34:24] Ja fix programmi kasutades näitajaid. Mida me teeme, on meil kolm read, mis on erinevad. Neist esimene on me ei paneks x. Me kulgeb aadress x. Nii et selle asemel kopeerige väärtus kast Ma olen ikka läheb kopeerida midagi. Aga ma kopeerige aadressi kasti. [00:34:45] Nii et kui annan aadressi kast viis, siis viie suudab leida, et mälu ja muuta selle väärtust. [00:34:53] Nii ja siis seal on mul et ei ole int enam. on int star. See on kursor täisarv. Ja siis, sest ma möödaminnes tegeleda siin ja siis, mida ma teen ei ole võrdne 5, sest hoiab aadress. Niisiis, mida ma tahan teha, on minna sinna ja sisu uuendamiseks sellele aadressile 5. [00:35:18] OK, nii et lähme läbi kõik read ükshaaval. Nii et kui ma hakkan siin, ma veel N / A N / A N / A kõike esimeses line, sest ma ei ole tegelikult deklareeritud kraami veel. Ja siis liinile kaks, mul on x võrdub 3. Int star ei ole, sama nagu enne. [00:35:39] Nüüd läheb huvitavaks. Ma lähen edasi. Ja Oletame et aadress x 12 kuueteistkümnendsüsteemis. Olgem lihtsalt eeldada seda. Ma tegin seda üles. Nii et mida ma kulgeb siin on viis. Ma kulgeb 12. [00:35:56] Mis väärtus ei ole? [00:36:04] Õpilane: [kuuldamatu]. [00:36:06] Binky: Vabandust? [00:36:06] Õpilane: [kuuldamatu]. Binky: Jah, meeldib, et lähme eeldada, et me oleme siin, praegu. Ma palun. [00:36:12] Õpilane: [kuuldamatu]. [00:36:13] Binky: See ei ole algatatud. [00:36:14] Õpilane: [kuuldamatu]. Binky: Kuna me möödunud midagi funktsiooni. Jah? [00:36:19] Õpilane: Aadress x. Binky: See saab on aadress x. Ja aadress x 12, hea. Nii et x saab olema 3, sest me ei ole tõesti muutunud x veel. Ja siis läheb 0x12, nii aadress x, sest see on mida me edasi viis. [00:36:38] Ja siis, mis juhtub, kui püüame minna? Mida me leida? Nii et kui te proovite printida täht, me ei kavatse järgida sellele aadressile ja saada hinna sees. Ja raha on lihtsalt sama väärtusega, mis x on, sest see on aadress x, mis on 3. Kas me oleme head? [00:36:56] OK, ja siis nüüd on meil tegelikult sinna minna. Ja me värskendame iganes on see aadress 12. Me teeme seda 5. Nüüd nii x ja star on 5. [00:37:13] Miks see nii on? Kuna aadress x 12. Ja on ka 12 kui selle väärtust. Nii et kui me järgime 12, me oleme lihtsalt lähed leida x. Mida iganes me teeme star juhtub x-, sest sisaldab aadress x. OK? [00:37:34] Ja see on nagu tuum fix. Nii et nüüd me saame, alates kuni viis, tegelikult juurdepääsu mälu elas peamine. Nii et see mälu ei ela sisse viis, nagu enne, see aadress 12. Ja me suutsime sinna minna ja muuda selle väärtus 5. [00:37:50] Ja siis kui me tagasi, unustame. Me unustame star. Ja x on veel viis. Nii et kui sa tahad rakendada swap funktsiooni, sa oleks lihtsalt teha täpselt sama asja, välja arvatud peate int tähed siin ja nii edasi ja nii edasi. OK? Kas me oleme head? Külm. [00:38:10] Nii pointer aritmeetika. See on veidi keeruline teema. Nii selgub, et osuti on vaid täisarvud. Sa ei mõtle neid täisarvud. Kuna mälu, teil on nagu mäluaadressi null, üks, kaks, kolm, neli, viis. Nii saame Kokkuvõttes mälu aadresse. [00:38:23] Ja see on tavaliselt, mida te teete, kui sa oled ja massiiv, näiteks. Hulgaliselt on nagu külgnevas ploki mälu, on palju tähemärki, Näiteks palju ints. Nii et kui tahad minna Teine int või kolmanda int, võid lihtsalt Kokkuvõttes midagi esimesele aadress ja sa lähed sinna. Nii et see on tõesti kasulik, et. [00:38:39] Ja asi, mida meeles meeles, kuigi on et see ei ole lihtsalt meeldib tavalise aritmeetilise in mõttes et kui sa oled tegelevad, ütleme, int star, ja lisate 1 sellele siis sa ei kavatse lisada 1 kuni aadressi sa lähed lisada 4 aadressile. Kuna int on 4 baiti. [00:38:57] Nii et see on nagu kõndides massiivi. Kui meil on hulgaliselt palju ints ja siis püüame minna teine, see on põhimõtteliselt ainult liidetakse aadress Esimene pluss 1. Aga see ei olema-- lihtsalt oletame et aadressi esimene on 4. Siin antud juhul. Ja kui me Kokkuvõttes, nii et see on see, mis toimub. Meil on int. Int x võrdub 5. X väärtus on 5. Ja me initsialiseerida see pointer int y int täht y võrdub aadress x. [00:39:31] Oletame, aadress x on 4. Mis juhtub Nüüd, kui ma summa lisatakse 1 y? See saab tegelikult summa 4 asemel vaid 1. Nii et ma lisada 1, kuid tegelikult lisatud 4, sest arvuti tark. Nii see läheb tegelikult lisamiseks poolt i korda suurus tüüpi pointer. OK? [00:39:58] Nii oleks see paalia, näiteks kui see oli char täht y, ja kui lisasime 1, siis see oleks olla 5, sest char on 1 bait pikk. Hea? [00:40:10] Ja lõpuks saime viiteid ja massiivid. Tuleb välja, et iga kord, olete tegelevad massiiv, sa oled tegelikult tegelevad pointer. Väga kena kontseptuaalne põhjus see, et massiivid on väga suur. Seega pidage meeles, et ma ütlesin, et iga kord, kui te kaotate asju ümber, kopeerida kõike. Nii et kui teil on massiivi see on tõesti väga suur, sa tõesti ei taha kopeerida kõike iga kord te kaotate ta ümber teise funktsiooni, sest see on just Tohutul hulgal tööd. Nii et mida te teete on lihtsalt minevikus aadress esimese baidi. Ja siis funktsioon on juurdepääs et kõik osad, mis massiivi. Nii et olete sooritanud hulga oma aadress, nii aadress esimese baidi. [00:40:48] Nii et kui me kuulutame int massiivi 3, siin, me teame, kuidas on võimalik saada esimene osa kasutades sulg märke. Kui meenub sulg märke, massiivi sulg 0 võrdub 1. Noh, see oleks täpselt sama lihtsalt sinna minna ja panna 1. OK, on ​​täpselt sama asi. Nii et sulg märke siin on sama nagu seda joont. [00:41:13] Ja arva mis sulg märke sensorvõre sulg 1 on? See on lihtsalt sama asi nagu see. Nii lisada üks massiiv. Liiguta mööda mällu. Minge sinna ja pane 2. OK? Ja see rida on sama asi. Me tahame minna kolmandale kasti, nii et massiivi pluss 2. Minge sinna ja pani 3. Nii mälu, mis on juhtub on meil läheb on 1, 2, ja 3 kolm elementi selle massiivi. [00:41:44] Me oleks võinud teha selle abil meie tuttav sulg märke. Ma tahan teiega teada et nad on sama asi. OK, küsimusi selle kohta? Nice. Nüüd ma lähen käsi selle üle, et Hannah, [00:41:59] HANNAH: Jee, Ju-huu. [00:42:00] Binky: Rääkides mälu ja artikkel kraami. [APPLAUSE] [00:42:06] HANNAH: Tere, jahe, nii et me oleme räägi natuke rohkem umbes mälu, mida me lihtsalt suunata suunanäitajaks. Nii et on olemas kaks peamist osad mälu, et me oleme mures. Meil on virnas, mis kasvab üles põhja, ja hunnik, mis läheb ülevalt. Ja stack läheb hoidke kõik meie näiteks muutujad. Nii et iga kõned funktsiooni saab oma väike raami pinu. Nii nagu Gabe varem mainitud, kui me helistada funktsioon uuesti ja uuesti, me lähme korstnat asjad üles virna. [00:42:35] Ja samamoodi hunnik, mis algab ülaosas läheb hoidke kõik mälu et me dünaamiliselt eraldada. Ja nii nagu me dünaamiliselt mälu eraldada, Selle langevad põhja poole. Paar asja olema teadlik, kui me kasutame virnas ja hunnik, koos virna, kui meil on liiga many-- olgem say-- rekursiivne kõned ja me kutsudes uuesti funktsiooni, ja uuesti ja uuesti ja uuesti, ja see on virnastamine up, virnastamine up, virnastamine up. Ja see kukku hunnik. Me läheme otsa mälu. See läheb põhjus probleem arvutiga. Ja seda nimetatakse korstnat ülevoolu. Nii et kindlasti midagi peaksid olema teadlikud ja püüavad vältida. Ja hunnik, peame meeles pidama, mitte kogemata lekkida mälu. Iga kord, kui kasutate malloc, ei unustada, et vabastada see mälu. Vastasel juhul lihtsalt olema hunnik raisatud, arvuti ja ei tea, et see on tasuta kasutada, et mälu. Nii et need on paar asja olema väga ettevaatlik, kui olete tegelevad korstnat ja hunnik. Kõik küsimused on? Awesome. [00:43:31] OK, lahe. Nii selline on samad idee korstnat ülevoolu, kus me läheme kaugemale piire, mida mälu on me peaks olema võimalik kasutada. Nii, et võta näiteks puhver, või siis võiks lihtsalt mõelda seda massiivi. Ja me ütlesime, OK, me ei kavatse luua selle kena väike massiiv. See saab olema string. Või siis läheb salvestada tähemärki. Ja see on lihtsalt ütlen tere. Ja see on määramata. Nii see on. [00:43:53] Kuid kui mul oleks keegi kuri ja tahtis midagi halba selle massiiv, mis Ma võiks teha, on proovida kirjutada Viimase stringi lõpuni. Ja nagu näete, kui Ma kirjutan piisavalt kaugele, Ma ei saa tegelikult mõjutada saatja aadress. Ja kui ma hakkan mõjutada saatja aadress, Ma mõjutavad seda, kuidas programm tegelikult töötab. Ja selle asemel, tagastamise, siis tean, õnnelik string nagu hello, I võiks teha midagi halba, nagu minema kusagil mujal arvutis veel mälu, muuta, mida ma tahan teha. Nii see on, mida see näeks on see, kui ma lihtsalt omamoodi täis it up juhuslikult prügi väärtus, sel juhul lihtsalt. Ja siis, kui ma tegelikult sai mälu aadress, Ma hakkasin selle täitmist midagi et tegin seda, mida ma tahtsin seda teha. Kõik küsimused koos buffer overflow? Awesome, sõidavad õigus kaudu seda kraami. [00:44:40] OK, nii et me rääkisime palju umbes osuti koos Gabe. Kuidas me tegelikult saada osuti? Kuidas saada aadressile mälu? Noh, me saame kasutada seda kena funktsioon kõne malloc, mis ei hakka tükike mälu konkreetselt hunnik, kui me arutasime, ja see läheb teile tagasi kursor sellele aadressile mälus. Ja väide, et me on anda malloc on, kui palju ruumi mälus tahame. [00:45:04] Nii et näete, suurus bait. Oletame näiteks, või tegelikult selles näites, me eraldada piisavalt ruumi 10 täisarvud. Nii et ilmselt see, mida me ei kavatse soovite panna siin on hulgaliselt 10. täisarvud. Nii et me anname selle suurus ints, mis Õppisime oli mitu baiti? Õpilane: 4. HANNAH: 4, ilus, ja me tahan neist 10 järjest nii et meil on piisavalt ruumi, et salvestada kõik 10 täisarvud, antud juhul. Midagi super oluline, iga kord, kui helistada malloc, sa pead kontrollima for null. Kui sa ei märgi for null, noh, malloc kui see otsa saab ruumi ja ei saa enam anda teile rohkem mälu, ta naaseb null. Nii et kui sa ei märgi, malloc võib naasta null. Ja siis, kui me püüame dereference nullviida, me ei kavatse saada killustatust süü, mis me räägime praegu. Awesome. [00:45:56] OK, küsimused malloc? Jah? [00:46:00] Õpilane: Kas kontroll null [Kuuldamatu] ei tee seda viktoriini? [00:46:05] HANNAH: Tõsi, küsimus oli see matter-- kohta viktoriin, siis saad punkte maha, kui sa ei märgi for null? Jah, saab punkte maha Kui sa ei märgi for null. Iga kord, kui helistada malloc nii viktoriini ja oma psets ja reaalses elus, sa pead kontrollima for null. Hea küsimus. [00:46:18] Gabe: Mida teha, kui ma ei ole vaba? HANNAH: Gabe tahab teada Mis siis, kui me ei ole vabad. Siis on meil mäluleke meie hunnik. Muid küsimusi? Jah? [00:46:27] Õpilane: Kas sina-- minna üle buffer overflow reaalne kiire jälle? [00:46:30] HANNAH: Muidugi. Küsimus oli võimalik läheme üle buffer overflow tõesti kiire. Lähme tagasi slaidid. Nii puhver, saate lihtsalt ma arvan et kui massiivi, eks? Teil on ruumi mälu. Ja kui me kõigepealt luua meie massiiv, me teame, massiivid on fikseeritud suurus, või meie puhver on fikseeritud suurus. [00:46:45] Ütleme, et antud juhul on meil lihtsalt piisavalt ruumi, et kirjutada string tere. Kui me läheme varem, et seotud, kui me läheme varem mida meie massiivi me ütlesime, et võiks korraldada, me võiks tegelikult alustada kirjalikult mällu et arvuti ei ole tahad, et me kirjutada arvesse. Ja eriti, kui me tabanud midagi vastutasuks lahendada funktsiooni, mis nagu iga teine ​​tükk mälu, on lihtsalt kuskil oma arvuti, saate tegelikult seda muuta ja hakata tegema kurja. Vastus teie küsimusele? Awesome, midagi muud? Jah? [00:47:17] Õpilane: Nii korstna [kuuldamatu], siis ütles minge alt läheb üles. Jooksul korstna valik, kas mälu minna, nagu, ülevalt alla, mis on seotud iga pausi? [00:47:28] HANNAH: Kuidas sina-- edasi lükata kuni Rob see üks. [00:47:35] ROB: See kasvab sama suunas stack kasvab. HANNAH: OK. ROB: Nii et ma saan segaduses. See saab olema võtmiseks. HANNAH: OK. ROB: See on õige. Nii et kui virna kasvab üles, siis generally-- see ei pea nii olema. kuid võite kuulutada int x. Siis deklareerima int y. Siis int x üldiselt väiksem korstnat kui int y. Aga see on lihtsalt fakt. See ei ole nagu oluline seeme asi. [00:48:02] ROB: Nii et küsimus jälle oli lihtsalt mis juhtub iga kaadri koguneb. Nii et iga funktsiooni saab tükike pinu. Ja kui tõusevad, on selle tükike jooksul, et raami me öelda, et muutujad jooksul, et raami liigutada ka üles. Küsimus? [00:48:17] ROB: Just olevat mic. HANNAH: Oh, jah. ROB: ma räägi teile. HANNAH: Oh, jah, OK. ROB: Erandiks on jaoks massiivid ja structs, kui massiivid, madalama indeks array, ja structs suurem valdkonnas structs on garanteeritud olema madalamal aadressid kui hiljem väärtust massiivi. Nii et need on tagatud. Aga mingit erilist muutujate, nagu int x ja int y jooksul funktsiooni pole vaja suhteid vahel nende aadressid. HANNAH: Teine küsimus siin? Õpilane: Nii puhvris voolu ainult buffer overflow ainult juhtus, kui sa on, nagu, määratud summa massiivi et siis on suurem? Like, saate? Seega, kui olete paludes midagi user-- [00:49:05] HANNAH: Mm-hm. Õpilane: Kas nad sunniviisiliselt teile midagi tagasi see on suurem kui mis tahes olete neile eraldatud? HANNAH: Muidugi, nii Küsimus oli põhiliselt Kasutaja saab anda teile rohkem kui te küsite? Õpilane: Jah. HANNAH: Noh, sa võiksid takistada kasutaja teeb seda. Sa võid konkreetselt öelda ei anna mulle rohkem kui x number baiti Ma olen ainult teile ruumi x number baitide, x arvu märke. Nii et see on midagi, mida soovid vältida. Jah? Mis vahe on korstnat ülevoolu ja buffer overflow? [00:49:30] HANNAH: OK, nii korstnat overflow-- oh, mida vahe on virnas ülevoolu ja buffer overflow? Nii et me tahame mõelda stack overflow juhtub, kui me tegelikult virnastamine up nende funktsioon nõuab. Oletame, et teil on rekursiivne funktsioon, sest me teame, et iga kord, kui kõne funktsioon, see saab oma raami pinu. [00:49:45] Nii et me Kestab liiga kõrge, ja siis hakkame ülevoolu. Ja me kasutame liiga palju mälu ja Meil ei ole kuhugi vasakule. Me saame selle vea. [00:49:51] Buffer overflow kuulub programmi. Me tahame, ei pruugi olla otsa mälu samamoodi et me võiksime kui me virnastamine üles nii palju funktsioon nõuab, kuid me kirjutame möödunud mälu et me teame, mida saame kasutada. Ja see võimaldab meil teha kurja. Jah? [00:50:08] ROB: Jah, võite lihtsalt korrata seda, kuid võite ka mõelda virna ületäitumise kui nagu teatud tüüpi buffer overflow. Või sa lihtsalt arvan, et teie Kestab nagu tõesti suur puhver. Siis kui ülevoolu sa korstnat, see on selline nagu puhvri ületäitumine. Aga stack overflow on lihtsalt konkreetne mõiste, mida kasutatakse siis, kui virna ise ülevool. [00:50:24] HANNAH: Õigus, nii et korrake video see saab mõelda korstnat ülevoolu kui konkreetset tüüpi buffer overflow. Cool? Veel küsimusi, enne kui me minna? Awesome. [00:50:37] OK, lahe, nii räägime veateadete. See on midagi, mis on näidanud üles mitu viktoriinid nii midagi, mis on väärt võttes teine ​​pilk. Olen kindel, et olete kokku puutunud vähemalt mõned neist kui sa teed oma probleem seab. Seega veenduge, et saate rääkida nende kohta viktoriini. [00:50:50] Nii esimene on killustatust süü. Ja see on iga kord, kui me üritada pääsu mälu et me ei tohi juurdepääs. Nii et sa migh näinud seda, näiteks Breakout. Kui avastamiseks kokkupõrge tagasi null, ja siis püüdsin midagi selle null, arvuti annaks Teile killustatust süü. Nii et üks oluline asi teha selleks, et proovida seda vältida on alati kontrollida null. [00:51:13] Võib-olla olete näinud ka kaudne deklaratsiooni funktsioon. Nii et see on see, mis juhtub kui Allison näitasin kuidas teha prototüübi, eks? Ütleme, et meil on mõned funktsioon, mis me defineerime. Oletame, et kuubik. Ja see läheb põhja Meie ülesanne all peamine. [00:51:27] Kui me unustame ütleb arvuti kohta kuubik, kui peamine üritab helistada kuup, arvuti on, nagu, oh heldust. Mul pole aimugi, mida see tähendab. Ma ei tea, mida teha, siin. Nii prototüüp ütleb ärge muretsege. Ma ütlen teile. [00:51:42] See tulen. Ära minu peale karjuda. Ära anna mulle kaudne deklaratsiooni funktsioon. Nii et kui teil tekib selline viga, üks asi, mida sa lähed teha tahad on veenduge, et olete oma prototüüp. OK? [00:51:53] Ja last but not least, deklareerimata tunnus on sisuliselt kui üritate kasutada muutuja, mida te pole deklareeritud. Nii et äkki hakkad öeldes, nagu n pluss pluss. Ja arvuti ütleb, mis on n? Kunagi ütles mulle n oli asi. [00:52:06] Nii et üks asi, mida sa pead tegema, et sa tegin, on öelda arvuti, mis on n. Nii näiteks, n võib olla täisarv. Ja siis vältida selle vea. Kõik küsimused on tüüpilisemad vead? Jah? [00:52:17] Õpilane: Sest kaudselt tunnistamise funktsioon, see võiks ka olla, et jätta üks raamatukogude sa pidid lisada asemel prototüüp? [00:52:24] HANNAH: Õigus, nii et Küsimus oli, kas te Samuti tekib selline viga, kui te unustasid raamatukogu. [00:52:28] Õpilane: Jah. [00:52:29] HANNAH: Absoluutselt, sest samamoodi et me tahame, et muuta meie prototüübid enne põhifunktsiooni kui meil on raamatukogu, need lähevad sisuliselt hulka prototüüpe, hõlmavad mõisted funktsioone. Hea küsimus. [00:52:40] Õpilane: Sest segmenteerimine süü oleks, et ka siis, kui me, nagu proovinud juurdepääsuks muutuja, nagu erinevas [kuuldamatu] kui see kuulutati? HANNAH: Muidugi, nii oleks meil saada killustatust süü kui me püüdnud ligi pääseda muutuja välja ulatus? Kas see oli küsimus? Õpilane: Jah. HANNAH: Beautiful. Nii et ilmselt, sa lähed, et saada deklareerimata tunnus viga asemel. Nii et see on lihtsalt ütlen Ma ei tea, mis see on. Cool, midagi muud? Jah, olgu, ilus. [00:53:10] Kõik righty, nii rekursiooni. Nii et ma mainisin paar korda et me võiksime saada korstnat ülevoolu sest me helistades rekursiivne funktsioon nii mitu korda. Saame kõik need virna raamid, blah, blah, blah. Mis veelgi on rekursiivne funktsioon? Noh, rekursiivne funktsioon on mis tahes funktsioon, mis nimetab ennast. [00:53:26] Mõned asjad olema teadlik, kui rakendavad rekursiivne funktsioon, ärge unustage lisada aluspõhimõtted. Aluspõhimõtted on koht, kus me lõpuks. Nii näiteks, kui me kodeerimist Öelda, Fibonacci alamkataloogidega me tahame veenduda, et kui me 0-või esimese Fibonacci number, need numbrid on need juhtumid, sest need ei sõltu asjadele, mis oli enne. Need on oma väärtused. [00:53:51] Mõned plusse rekursiooni, mis on küsimus, mida me oleme näinud varasematel viktoriine. Nad võivad põhjustada rohkem lühike, elegantne koodi. Ja palju funktsioone, palju erinevaid algoritme, tegelikult võimalda recursion. Nende määratlus võiks olla rekursiivne ja iseenesest. Nii Fibonacci on üks. Faktoriaal on üks. Mestimissortimine tähendab one-- kõik asjad, mida saab vaadata. OK, küsimusi? Jah? [00:54:15] Õpilane: nurgas puhul sarnane aluspõhimõtted? Või on see, et mõned teised selline [kuuldamatu]? [00:54:22] HANNAH: Muidugi, nii nurga puhul on any-- nii on nurga puhul sama baasi puhul? Nurga puhul on midagi, mida teie kood võib käituda natuke teistmoodi. Base juhtum on omamoodi seotud, on et nad on nagu teatud juhtudel mida soovite vaadata. Aga mõte aluse puhul on see, et soovite oma rekursiivne funktsioon lõpetada mingil ajahetkel. Ta ei saa hoida kutsudes ennast igaveseks. See peab lõpetama mingil ajahetkel. [00:54:49] ROB: Jah, tihti oma baasi juhtudel võivad olla näited nurgas alused. [00:54:53] HANNAH: Õigus, lahe, midagi? [00:54:55] Õpilane: Kas sa seletada tugineb natuke rohkem? Ma ei saa päris hästi aru [Kuuldamatu] base juhtudel. [00:55:01] HANNAH: mitteväärismetallist juhtudel? [00:55:02] Õpilane: Base juhtudel jah. [00:55:03] HANNAH: Ah jaa, muidugi. Vaatame. Kas meil on kriit siin? Jah, me teeme. OK, nii et tõesti kiiresti, ma proovida kirjutada piisavalt suur et näeksite ekraani. Räägime, tõesti kiiresti Fibonacci. Nii et ma annan sulle Fibonacci jada. Võite otsida mõiste. [00:55:17] Sisuliselt iga number järjestuses on summa kahe eelneva numbrid. OK, nii, kuidas ma Äsja kirjeldatud Fibonacci, võis kuulda recursion, eks? Kui ma ütlesin, iga number on summa kahe eelneva numbrid võib öelda, OK. Noh, n-Fibonacci number-- nii olgem ütleme, et meil seda funktsiooni nimetatakse fib-- luiskama n saab olema võrdne luiskama n miinus 1 plus-- kahju, me läheb järgmisele reale üle siin-- luiskama n miinus 2. [00:55:52] OK, nii et see töötab hästi, kui sa oled vaadates näiteks null, üks, kaks, kolm, neli, viies Fibonacci arv, kus saab öelda, et 5 on võrdne 2 pluss 3. Aga kui sa oled alguses? Mis siis, kui sa oled lihtsalt pihta need esimesed kaks väärtust? [00:56:08] Et saada seda 1, siis ei saa öelda lisada kahe eelneva sest et null and-- Ma ei tea. Nii et mingil hetkel peame lõpetama. Mingil hetkel peame ütlema, et need kaks lihtsalt on oma mõisted. 0 Fibonacci jada on 0. Ja esimene Fibonacci jada on 1. [00:56:26] Niisiis, kuidas ma võiks kodeerida seda, ma ütleks, kui n on väiksem kui kaks, siis lihtsalt tagasi n. Ja see oleks minu aluspõhimõtted. See, kuidas ma tean, et peatada mille rekursiivne funktsioon. Kas on selge? Awesome. Midagi muud on recursion? Ilus. [00:56:45] Lähme kiiresti rääkida otsing ja omamoodi joosta korda. Ja siis ma annan Davin mõned aeg rääkida kodeerimine näiteid. Nii et siin on peamised otsingumootorid ja kehvasti, et sa peaksid teadma. Guarantee-- ma ei saa garanteerida, sest ma ei ole näinud quiz-- kuid see kerkib viktoriin pärast viktoriini pärast loobuda. Nii et kindlasti kasutada seda tabelit. Like, seda diagrammi. Pane see peale oma petma lehte. Sul on õnnelik inimene. [00:57:09] See ütleb meile, run korda iga nende liigitamise ja otsimise algoritme. Nii lineaarset otsingut, näete perspektiivis ajal ja sama binaarne otsing. Mine üle, mida nende algoritmide seda, üldine idee. Vaata mõned pseudokoodi, kui mitte koodi ennast. [00:57:25] Sa näed, et mull sorteerida on ülemine seotud halvimal juhul n ruudus. Nii et kui meie massiiv oli täiesti tagasi enne tahtsime sorteerida, me ütleks, et see on kavatseme n ruudus samme. Kuid parimal juhul nii alampiir parimal juhul saab olema, kas see on juba täiesti sorteerida. Siis kõik me peame tegema, on veenduge, et see on järjestatud. Kas on küsimus siin? [00:57:47] Õpilane: Millal peaks soovite kasutada sort? Omamoodi. Ma olen lihtsalt uudishimulik. [00:57:52] HANNAH: Kui eks soovite kasutada valikut sort? See üks? Üks, mis on n ruudus mõlemal juhul? [00:57:55] Õpilane: [kuuldamatu]. [00:57:56] HANNAH: Nii et see on väga erinev. Kui teil on konkreetseid nõuded oma programmi, nagu asjad, kui me just ütles rakendada search-- sorry-- rakendada omamoodi, saate ilmselt tahad minna ühe need, on parimal juhul n, või alumise piiri parimal juhul n. Aga seal võib olla teatud asju nagu, ütleme, vahetustehingud on tõesti kallis mingil põhjusel. Siis sa tahaksid teha mull sorteerida, sest sa pead tegema nii palju vahetuslepingud, asjad niimoodi. Iga other-- jah? [00:58:23] Õpilane: kas see oleks [kuuldamatu] öelda, et [kuuldamatu]? HANNAH: See on üks asi, et oleks öelda kui te vaatate rakendamist. Kuidas ma oleks tegelikult mõelda, miks see on n ruudus on see, et meil on käivitada meie massiivi pikkusega n, iga kord, kui tegemist on kõige enam n vahetustehinguid. Ja me peame tegema seda protsessi n korda. [00:58:46] Nii et kui sa pead tegema kõige enam n vahetustehingud ja n läbib array, seal saab olema n ruudus. Aga jah, see paljastatakse läbi selle topelt silmus, kui küsimus asked-- või Pesastatud silmus, ma peaks ütlema. OK? [00:59:00] Ja siis liita omamoodi, mis on kiireim omamoodi nüüd, või et oleme kaetud CS50, tean, et peamised algoritm on Selle idee murdes sorteeritud tükki ja siis liitmisega need järjestatud bitti. Ja viib meid sisse n log n. Küsimused otsingutel ja kehvasti, enne kui ma selle edasi? Vaatame. [00:59:21] Oh, ahelloendid. Vabandust, mul on veel üks teema. OK, awesome, mis on seotud nimekirju. Probleem massiivid neil on fikseeritud suurusega. Nii et kui te ei tea, kui suur teie panus saab olema, sa ei taha luua massiivi. Sest kui me loome massiiv, mis on liiga väike, võiksime tekib buffer overflow. [00:59:35] Nii et selle asemel, me võiksime teha midagi lingitud nimekirjad, mis võimaldab meil dünaamiliselt suurusega andmestruktuur mis võimaldab meil säilitada paindlikum andmemaht. Nii et iga sõlme meie seotud nimekirja, meil on kaks tükki. Meil on tegelik väärtus, et ta salvestab. Nii et see on just asi, mida oleks vaata massiiv, näiteks. Ja siis me ka jälgida kursor järgmisele asi mällu. [01:00:04] Erinevalt massiivid, mis me teame kõik läheb et olema-- massiivi elemendid on kõik üks teise järel memory-- seotud loetelud võivad olla kõikjal mälu. Nad on meelevaldne kohtades. Nii et kui me tegelikult minna leida neid, me vaja jälgida Järgmine asi meie nimekirjas. [01:00:19] Ja siis, et teada kui see nimekiri tervikuna, kõik me peame silma peal hoida on esimene osa meie seotud nimekirja. Ja mis sa võimaldavad meil järgida. [01:00:31] Nii see on, kuidas sa võiksid määrata režiimis. See on suurepärane võimalus ära structs. Kuna teil on see idee, noh, antud sõlme, mul on kaks tükki. Mul on tegelik väärtus omaette. Ja siis mul on kursor Järgmine element seotud nimekirja. Nii et näete, meil on täisarv n, mis saab olema tegelikust väärtusest, ja siis kursor sõlme ehk järgmisel aastal. Nii et see saab olema järgmise element meie seotud nimekirja. Õpilane: Jah? Kas teil on täpsustada, et täht on nagu struct? [01:01:01] HANNAH: Jah, nii kuna see on peaaegu nagu mingi, tundub rekursiivne määratlus, et me pead teadma, mida sõlm on sees leida sõlme. Kuna see ei ole tegelikult tea, mis sõlm on täielikult kuni saame lõpuks see-- ja pärast seda saame lihtsalt nimetame seda node-- sees Selle definitsiooni peame seda kutsuda struct node. Hea küsimus. Veel midagi? Jah? [01:01:26] Õpilane: miks me pean ütlema sõlme kaks korda? Sest kui me olime [kuuldamatu] me lihtsalt pidin seda tegema semikooloniga kuid nüüd me peame leidma, et struct node? [Kuuldamatu]. HANNAH: Nii et ma usun, Viimase näiteks me olime lihtsalt luua millal tahtsin kasutada üliõpilane pärast, et sa pidid kasutama struct node-- Ma sorry-- struct üliõpilane. See võimaldas meil, tagantjärele, vaid kasutamine sõlme lisada uut tüüpi sisuliselt. See on mõtet? Nii et me tahaks olla minna tagasi ja vaadata koodi enne. Aga ma arvan, et me ei kasutanud typedef. Ja me küsis, miks me peame kasutama typedef? Typedef võimaldab meil vältida sõna struct alguses. Jah? Õpilane: Mis sorti küsimused oleks tulla poolest poolest sõlmede ja ahelloendid? [01:02:10] HANNAH: Nii et üks asi on see, võiksime öelda, kuidas võib otsida läbi seotud nimekirja? OK, sest see on veidi keerulisem kui siis, kui otsite läbi massiivi. Me ei saa lihtsalt vaadata element null, element ühe elemendina kaks, blah, blah, blah. Kui me tahame, et otsida kaudu seotud nimekirja, me tahaks tegelikult peavad järgima see väike labürint suunanäitajaks. Nii et olgem tegelikult minna selle kaudu tõesti kiiresti. Mida me saaksime teha tellida mina-- ütleme me tahan lihtsalt kinnitada, läbi meie täiesti seotud nimekirja. Me hakkaks eesotsas. Ja siis, et liikuda järgmisele element, asemel lihtsalt incrementing ühe nagu me võiksime läbimas massiiv, me tegelikult läheb Jälgi järgmise pointer, nii leiame kus mälu järgmise elemendi. Nii et ma tean, et see ei ole piisav võtta seda kõike just nüüd, aga sul on need slaidid. Nii et sa ei lähe läbi Selle veidi aeglasemalt. Aga sisuliselt, mida me tahame tegema, on järgige neid näpunäiteid läbi kogu seotud nimekirja. Nii et see on küsimus võidakse teilt paluda. [01:03:01] Midagi teate koos sisestamise oletame tahtsime panna uus element ees meie seotud nimekirja. Me peame olema väga ettevaatlikud, umbes et kus me tagasiloovutatud suunanäitajaks. Sest oletame, et ma just ütlesin OK. Tee head käsk see uus element. Lihtsalt see punkt 1 Siis me oleme sisuliselt kaotanud ülejäänud meie nimekirja sest ma ei mäleta, kus 2 elu. [01:03:25] Nii et me peame tegema väga kindlas järjekorras. Esiteks, me teeme uue element punkt pähe. Ja siis me teha peaga osutavad uus element. Nii et vaatame, mis näeb välja nagu koos arrows-- just niimoodi. Nii et esmalt on uus element punkt vanale pea. Ja nüüd on meil peas osutavad uus esimene element. Kõik küsimused on? [01:03:49] OK siin on natuke koodi uuesti, midagi vaadata natuke hiljem. Ja nüüd ma muudan selle üle Davin jaoks GDB ja natuke tava kodeerimine paberil. Ilus. [01:04:01] ROB: Ja Rob. [01:04:01] HANNAH: Oh, Davin ja Rob. Mul on kahju. [01:04:03] Õpilane: Woo! [01:04:08] ROB: Aitäh. [01:04:09] DAVIN: Kas sa tahad öelda, kõik reaalne kiire? ROB: Jah, jah. DAVIN: Kui ma üles. OK, kuid Rob paneb mikrofoni, nii et mida on GDB? Igaüks peaks näinud GDB sisse klassi ja ka tööajal. Ja sa peaks olema seda kasutada. Mis on GDB? Igaüks? [01:04:28] Õpilane: See on siluri. [01:04:29] DAVIN: See on siluri. Ja mida see võimaldab teil teha? Nagu, miks meile meeldib GDB? Õpilane: aeglustamiseks programmi. DAVIN: Õigus, nii et saab kõndida läbi see meeldib inimese tempos. Ja mis siis on mõned käsud, mida saate teha? Noh, break on ilmselt oma lemmik käsk. Sest mis võimaldab teil murda programmi ja tegelikult kõndige läbi rida-realt. [01:04:44] Run võimaldab teil käivitada. Edasi nagu samm teel. Mis on vahel kõrval ja samm? Oota, öelda, et valjusti. See oli õige. [01:04:54] Õpilane: [kuuldamatu]. [01:04:55] DAVIN: Jah, fantastiline. Nii nagu kõrval ja samm, kui you're-- oletame, et teil on funktsioon, mida määratleda. Oletame, et mõned oma põhifunktsiooni ja sa oled lihtsalt lööb järgmisel seejärel, Järgmine. Sa oled tegelikult läheb täidab seda funktsiooni, aga sa lähed hüpata üle. Kui põrkad samm või s või mis iganes, sa oled läheb tegelikult hüpata arvesse, et funktsiooni ja siis saab löögi kõrval näha erinevaid kõnesid sees konkreetse funktsiooni. Jah? [01:05:16] Õpilane: Kas on võimalik, hüpata, nagu, tagasi saada? DAVIN: Finish, jah, lõpeta hüpata sind. Nii see läheb, et lõpetada see funktsioon ja siis oled läheb tagasi peamine, näiteks. Print trükib välja üks kord. Midagi ma alati kasutada on ekraanil. Näita seda trükkida välja pidevalt kogu ulatuses oma programmi. [01:05:32] Näiteks, kui sa oled aasta jaoks silmus, ja sa tahan näha, kuidas midagi on muutumas, ja sa ei taha, nagu pidevalt teeme nagu print, print, trükkimine, kuvamine näitab, et muutuja pidevalt, iga kord, kui vajutad nuppu Edasi. Ja jätkata. Nii GBD, see GDB. [01:05:47] Õpilane: Mis on see, kus te [kuuldamatu]? DAVIN: Mis see on? [01:05:52] Õpilane: Mida the-- kohalikud muutujad. ROB: Midagi on tegelikult nagu kohalikega või midagi. Ma can't-- [01:05:58] DAVIN: Võib-olla midagi sellist, jah. [01:05:59] HANNAH: In kohalikega? [01:06:00] DAVIN: Nii see on. See on üks. ROB: Beautiful. [01:06:03] DAVIN: Jah. [01:06:04] Õpilane: Mida jätkuvalt teha? [01:06:06] DAVIN: See continues-- nii et see on lihtsalt jätkan oma programmid. Nii et kui sa murda ja vajuta jätkata, siis läheb lihtsalt joosta, et programm kuni see tabab, et murda uuesti. Nii näiteks, kui te murdis funktsiooni ja sa lähed meeldib eest loop või midagi sellist, ja kui jõuad jätkata, siis läheb jätkata ja minna tagasi, et murda. Või pole katki, siis läheb jätkata ja lõpetada programmi. [01:06:22] ROB: Nii lihtsalt meeldib joosta peatused väga esimesel murdepunkti põrkad, kui te siis tabas jätkata, siis hoian läheb, kuni see on järgmise murdepunkti. Ja siis jätkavad läheb Järgmise murdepunkti. DAVIN: Muud küsimused GDB? Nii et ma arvan, et ka varem, oleme palunud teil, mida GDB on ja anda Näiteks mõned asjad, mida sa saab teha GDB, nii tõeline lihtne, aga jah. Seal sa lähed. Ja sõlmed? [01:06:43] ROB: Jah, nii mis suunas see oli? Õpilane: See oli see. DAVIN: oodake. ROB: See mees on? DAVIN: See üks. ROB: See poiss, oh, ma ei teadnud. Nii et me ei ole selge kohta, mida the-- ma ei tea, kes see was-- kuid küsimus. Me ei tea täpselt, mida te küsisid, nii lihtsalt selgitada midagi. Nii et esimene, nagu ma enne ütlesin, typedef olete alati kasutades ainult luua hüüdnimi tüüp. Nii et siin, hüüdnimi oleme loomine on seda tüüpi struct node. [01:07:13] Nii et esimene, unustades selle sõlme typedef, nii et see struct node lokkis traksidega alla järgmise lokkis traksidega on struct node tüüp. Ja me peame selle sõlme seal üleval, sest me vaja viidata sõlme siin. Nii et selline rekursiivne struktuure, sa pead andma selle struct nimi, või sa ei saanud öelda struct node siin. Kui enne õpilase kui olime kirjutatud, ma arvan, me ei öelda üliõpilane seal üleval, sest me ei pea ütlema struct üliõpilane sees struct ise. Nii et see on rekursiivne, et sunnib meid ütlema sõlme seal. [01:07:43] See sõlm on lihtsalt nime me andes sõlm typedef. Nii et sõlm ei ole sama mis sõlme. Aga see struct node on sama nagu struct node. DAVIN: Nii et kui te helistate, nagu, sõlme oma põhifunktsiooni sa ei kavatse pean ütlema struct node. Sa võid öelda, sõlme, sest sõlm on erinevalt-- on põhimõtteliselt sa räägid, OK. Selle asemel, et helistada struct node minu kood, Ma tahan lihtsalt ümber nimetada kui sõlm oleks lihtsam. [01:08:04] ROB: Kui alati kasuta typedef, siis see on ainus koht, kuhu lähed kuulutada muutuja struct node täht, jah. [01:08:14] DAVIN: OK, nii et viimane osa on raske õpetada because-- ROB: Mis on? [01:08:24] DAVIN: Kuna see kodeerimine paberil. Nii et igal aastal on meil kood paberile küsimustele. Nii et ma arvan, et eelmisel aastal 12 välja 80 punkti olid kood paberil. Aasta enne seda 10-l 80, aasta enne seda 20 100-st, nii mõnedki neist. Nii et sa lähed olema võimeline kodeerida kuni neid funktsioone käsitsi. [01:08:40] Nii et ma arvasin, võiksime minna läbi paari neid ja näha, kuidas inimesed teevad, liiki kõndida läbi neid aeglaselt inimestega. Nii et üldiselt, strlen ja atoi on olnud väga populaarne. Eelmisel aastal ma arvan, et meil oli GetPositiveInt ja RandomInt. Aga POW nii võimu, ka positiivne ka. Lähme läbi olla üks või kaks neist koos. Mida inimesed tahavad näha? [01:09:05] Õpilane: atoi. Õpilane: Jah. DAVIN: atoi? Õpilane: [kuuldamatu]. DAVIN: OK, ma lähen seda teha laual. Kas teil on eelistamine kui ma seda siin või seal? Seal Gabe ütleb seal. [01:09:16] ROB: Ja see on üldine mõtted Nende kodeerimine küsimusi. Proovige midagi kirjutada. Ärge jätke see tühjaks. [01:09:22] DAVIN: Jah. ROB: Kui te ei saa tagastustüüpi õige, või äkki me võiksime anda selle teid, kuid kui saad, nagu, kirjuta peaülesandeks allkirja Kui saad baasi juhtudel õige, või nurgas juhtudel või mäleta check for null, nii kaua, kui teil on asju, siis võib-olla me ei saa anda teile paar juhib probleemile. Ärge jätke see lihtsalt tühjaks. [01:09:36] DAVIN: Jah, ja kui te on lihtsalt täiesti stumped, kuidas tegelikult muutuda koodi. Kui kirjutad pseudokoodi, see on päris hea ka. Nii et see on nagu, see on kuus punkti küsimus, ja sa kirjutad õige pseudokoodi, saate vähemalt kaks punkti. Nii ei ole lihtsalt täitmata jätta. Proovige panna midagi. [01:09:50] ROB: See peab olema õige pseudokoodi, kuigi. [01:09:51] DAVIN: Jah. ROB: Nii et meil on üldiselt vähem leebe vigu pseudokoodi. DAVIN: OK, nii et kutid tahtsin näha atoi. OK, nii lihtsalt really-- nii et mida sa teha tahad on sa lähed olema antud mingi number. Aga see arv ei ole saab olema int, eks? Kuidas see saab olema? [01:10:08] Õpilane: [kuuldamatu]. [01:10:09] DAVIN: See saab olema string, eks? Nii et kui sa said string-- olgem say-- [01:10:13] ROB: Kas ma tõmba toimetaja? Ma ei tõmba up-- [01:10:16] DAVIN: Oh, sa tahad seda teha nüüd-- [01:10:16] ROB: Kas eelistaksite pardal? [01:10:17] DAVIN: Mida sa tahad? Ma mõtlen, et sa tahad seda teha käsitsi? Või sa tahad teha seda arvutis? [01:10:21] ROB: Kas see käsitsi. [01:10:22] DAVIN: [naerab] ROB: Kas see käsitsi. [01:10:23] DAVIN: OK, nii et see saab olema atoi. Mis siis it-- ma mõtlen, siis me Ilmselt annab see sulle. Aga mis läheb tagasi? [01:10:29] Õpilane: Int. [01:10:29] DAVIN: See läheb tagasi int, eks? So-- ma ei taha seda teha seal. Ma teen seda siin. [01:10:34] ROB: Sa ei tõmba see alla ja siis tõstab ta. [01:10:38] DAVIN: yeah. [Naerab] Mäng muutus. OK, nii et see saab olema int atoi, Ja mis see aega võtab? Char täht, nii lihtsalt string, star s, niimoodi. [01:10:57] ROB: Nice star, kena. DAVIN: See ei pruugi olla seal, OK. ROB: Jah. DAVIN: OK, nii et esimene asi, mida soovite do-- I ei tea, kas keegi nägi on praktikas solutions-- aga mida sa lähed et tahame teha, on sul läheb taha olla loop, sest sa oled lähed tahan tegelikult sammult läbi see string. Nii helpful-- nii oletame me läheme jaoks silmus, ja me ei kavatse astuda läbi iga element string. Kui kaua see veel on? Mitu korda me läheme itereerima sisse, et loop? Õpilane: Sterln? DAVIN: Sterln, jah. Ütleme int pikkus võrdub sterln s. Ja lihtsalt uudishimulik, miks see on alati lahke parem seda teha väljaspool silmad? Nagu, miks see on parem helistada Selle funktsiooni väljaspool loop? Lihtsalt kiire meelerahu vaadata? Jah? Õpilane: Nii et sa ei on hoida kontrolli seda. Sa võid [kuuldamatu]. [01:11:59] DAVIN: Täpselt, nii jah, täpselt, mida ta ütles. Nii et me ei ole, et hoida kontrolli seda. Nii näiteks, kui ma helistan Selle funktsiooni sees silmus, siis ma lähen hoida helistades Selle funktsiooni mitu korda. Ja see läheb vähenema tõhusust oma programmi. Nii et see on alati kasulik kuulutada see välja. [01:12:12] ROB: Ongi ütles kohta mõni neist probleemidest, päris palju nii kaua kui saad töölahus, saate täieliku krediiti. Nii et ärge muretsege, kui teie disain on täiesti kohutav. See võib panna meid häiritud lugemist oma koodi. Aga nii kaua kui see toimib, saad punkte. [01:12:28] DAVIN: Jah. OK, nii et siis ma lähen kuulutada mõned muutuv. See lihtsalt läheb helistada int summa. Ja ma lähen määrata selle võrdub nulliga, niimoodi. Ja see on lihtsalt läheb olevat kohatäide. Nii et saab olema mida ma lähen tagasi. Nii et ma lähen lõpuks tagasi summa välja selle programmiga. Nii et mul on nende kahe muutuja. Mul on pikk. Mul on summa. Ja nüüd lähme hüpata meie string. [01:12:48] Nii saab olema meie jaoks silmus. Nii et neli int I võrdub 0 w, samas I on väiksem kui pikkus I pluss pluss. Ja now-- ROB: Nice. DAVIN: OK, ja nüüd siin tuleb liha meie kood. Nii et tegelikult võite seda teha seda põhiliselt ühele joonele. Nii et kas keegi on idee mida me teeme siis? OK, nii et see on OK. Nii et me teeme öelda summa equals-- andke mulle kihutama see over-- summa võrdub summa korda 10 plus-- me oleme kavatseme s I miinus üks quote 0 ühe hinnapakkumise teinud, niimoodi. ROB: Väga intuitiivne. [01:13:56] DAVIN: Purustatud ta. OK, nii et someone-- Ma sain selle, ma sain aru. OK, nii et see on selgelt tõusevad. Mida see tähendab? Nii ei keegi teab, mida see tähendab? Kas kõik võivad näha seda? Ei, keegi ei näe, on see OK. Ma lähen mina-- [01:14:18] ROB: Ma lähen kirjutan valem just siin. DAVIN: OK, Rob läheb seda teha Arvuti, mis on lõbus. ROB: Oh jumal. Või ma ei tee seda. DAVIN: Valmis. Õpilane: Mul on üks küsimus. DAVIN: Jah, muidugi. Õpilane: [kuuldamatu]? DAVIN: OK, nii see tegelikult, nagu, lihtsalt üldiselt kui sa olid panna, nagu, käesolevas deklaratsioonis int Mul on 0 koma pikkus võrdub sterln, selle-- [01:14:59] Õpilane: [kuuldamatu]. [01:15:01] DAVIN: See on hea, sest selle-- Õpilane: miks sa isegi vaja kasutada pikkus? Miks ei võiks me lihtsalt [kuuldamatu] sterln s, nagu kogu aeg [kuuldamatu]? [01:15:08] DAVIN: Sa mõtled siin? [01:15:09] Õpilane: Jah. DAVIN: Kuna iga aeg see silmus jookseb, see saab hinnata selle tingimuse. Õpilane: Õigus. DAVIN: Ja kui teil on sterln seal, siis on läheb on tegelikult helistada et funktsioon iga kord. Nii et selle asemel lihtsalt võrreldes seda int, sa lähed tuleb kutsumata funktsioon ja seejärel võrrelda seda et tagastatav väärtus. Jah, nii see on lihtsalt, jah. [01:15:28] Nice, OK, nii et nüüd igaüks võib seda näha. Mida does-- see on nagu, see on see. See on moos, siin. Mida see tähendab? Mida ma teen? Jah, mõte? Jah? [01:15:43] Õpilane: Noh, nii et kui sisestate massiiv, sa lähed minema vasakult paremale, et sa lähed läheb koma alt [kuuldamatu]. DAVIN: Täpselt. Õpilane: Nii igaüks sa pead korrutama mida sa nägid, sest nende väärtus int poolt ajaks, kui sa liikuda, et üle ühe. [01:15:59] DAVIN: Perfect, täiuslik, nii näiteks olgem ütlen ma andsin sina-- ma olen kavatsete kirjutada siia. Ei, ma ei ole. Ma lähen kirjutan siia. Oletame, et ma sulle andsin 76, eks? Oletame, et ma annan sulle 76. See string alustada, OK? [01:16:15] Nii pikk on mis? 2, eks? Summa on 0. Siis hüpata meie jaoks silmus. OK, esimene esitus see, mis see saab olema? See saab olema summa on 0. Nii et kokkuvõtteks korda 10 0. See on mõttetu. Siis mida see teeb? Õpilane: [kuuldamatu]. [01:16:33] DAVIN: See saab omakorda, et iseloomu arvesse täisarv, eks? See on selline nagu teie probleem set-- see light-- see on selline nagu koos probleem seatud VISIONEER. Sa oled tegelevad ASCII väärtused. Nii et kui ma annan teile, nagu, seitse, kuid see on märk, ja sa tahad teada, OK, mis number see on? Jah, sa võid, jah. Mis number see on? Sa võid lahutada 0 sellest, aga te lahutame 0, iseloomu. [01:16:59] Ja kui mõned inimesed saada kompastumisen, nad nagu OK, hästi, ma pean teadma, ASCII väärtused seda testi? Ei, sa kindlasti ei vaja teada ASCII väärtusi, nagu, väiketähed , suured tähed A, null. [01:17:09] ROB: Ei ole mingit põhjust, et kunagi Pane see petma lehte. [01:17:12] DAVIN: Kindlasti mitte raiska oma ruumi selles. Võite literally-- vaid selle asemel öelda 48, nagu õigus kuni olemas, mis on samaväärne öeldes, üks, üks ülakoma, nagu, et täpselt sama. [01:17:27] ROB: Võid peaaegu mõelda sellest kui kui-- Jumal, ma vajan oma, oops-- võid peaaegu mõelda sest kui meil on midagi sellist hash määrata 0. 48. See ei tööta. Aga ma arvan et kui ülakoma 0 ülakoma ning kõik märgid. Mõtle seda konstant, mis kinnitab, et ASCII väärtus. [01:17:47] DAVIN: Jah. OK, nii et esimest korda läbi, nii koos 76-- nii esimest korda läbi, see on lihtsalt iseloomu 7 miinus iseloomu 0, ja need seitse integers-- ka need on seitse tühikuid teineteisest eemale teine ​​ASCII tabel või mis iganes. Nii et läheb tagasi int 7. Nüüd, summa võrdub 7. [01:18:08] OK, noh, olgem hüpata sellesse silmus uuesti. OK, nüüd on see summa korda 10. Nii et sa oled tegelikult liikuvate 7 vasakul. Kas on mõtet? Sa oled tegelikult liigutamisega vasakul. [01:18:19] Ja siis add-- see läheb 6 miinus 0. See on 6. Nii et see saab olema 70 + 6. 76, mis on sinu number. Nii et olenemata sellest, mis number Ma andsin teile, see on aeglaselt lihtsalt hakkab nihkuma suuremad väärtused vasakule, 1 teguriga 10 iga kord silmus, ja seejärel lisada kohta kui vaja. [01:18:37] Aasta tagasi? Õpilane: Me ei pea tegema mis tahes kontrollimine programmis? [01:18:41] ROB: Nii kuivõrd kontrollimiseks läheb programmi jaoks, Me ei ütle teile, päris palju, mida sa vajad, et kontrollida. Kui me ei saa öelda, midagi, siis üldiselt eeldada, sa pead kontrollima enamik asju. Nagu te võite lihtsalt olema ohutu, siis Tõenäoliselt tuleks kontrollida, hei, on s null? Siis ma ei tea, mida tagasi. Aga me ei ütle teile, selline asi. 0, ma ei tea. [01:18:59] DAVIN: Ja miks sa tahad uuesti üle kontrollima, kui s võrdub null? Õpilane: [kuuldamatu]. DAVIN: Kuna char täht. See on kursor. Nii et täiesti vastuvõetav deklaratsioon, võin öelda, OK, s võrdub null, sest see võiks olla pointer tühjaks. Nii et kui teil on suunanäitajaks Teie tee niimoodi, siis tuleb ilmselt vaadata. Sest kui sa ei kontrolli seda, ja siis sa siis minna oma silmus, ja sa oled doing-- kihutama alla. Scoot alla. [01:19:22] ROB: Vabandust, see on kõik. [01:19:23] DAVIN: Ja nii, nagu, kui see on null, ja siis seda teha, mis viga sa hakka? Õpilane: Sa lähed saada komplekt süü. DAVIN: Sa lähed määratud viga, paremale, sest sa oled püüab indeks null. Nii et sa lähed, et proovida indeks mällu, et sa ei oma. Nii et see, kas see on null, ja te seda teete, saate vältel. [01:19:39] ROB: Ma arvan ka eksami, kus me selle küsimuse küsis, me ütlen teile, et saate lihtsalt eeldada, see on positiivne arv. Kuna atoi oodatakse ka käsitseda negatiivsed arvud, nii et teil oleks eriline juhtum. Hei, on esimene märk kriips, sellisel juhul OK, nüüd on negatiivne täisarv. Me ütlen teile neid erinevaid asju. Me ütlen teile, mida peate hakkama. DAVIN: Jah. Nii et ma olen kindel, et mõned inimesed võivad have-- kui sa hakanud uurima vana eksamid, Olete näinud sterln. See on populaarne. Ja ma arvan, et sterln, siis tuli seda teha check for null, tagastab 0 või midagi sellist. Like, siis tuli kontrollida null. Ja kui sa ei ole, et oli juhtida off kohta viktoriini. Igatahes, kas kõik tunne OK atoi? Kas keegi taha minna üle osad uuesti? ROB: Oh jah, ma arvan, me ka öelda, sa Võib eeldada, et kõik on-- et nad tegelikult numbri sisestamisel, et sa ei pea muretsema, nagu, tähed on string, nii. DAVIN: Jah. Jah? Õpilane: Kas sa lähed üle ühe rohkem aega kui sa kasutad jutumärke ja ülakoma? [01:20:37] DAVIN: Muidugi, nii jutumärkide, väga lihtsalt on jutumärgid on stringid. Nii et kui te jutumärke midagi, see on string. Nii et, nagu, kui mul oli see 0 siin, ja ma tegin seda, see on string. See ei ole enam iseloomu. Nii et ma ei leia seda raha minu ASCII skeem, sest see on string, jah. [01:20:57] OK, muid küsimusi? Jah? [01:21:00] Õpilane: Nii olete juba vastasin sellele, aga nagu, kui me tegelikult kirjutamise kohta viktoriin, sa tahad, et me kirjutada kaldkriipsud nullidega [kuuldamatu]? DAVIN: Ei Küsimus oli peaks ju pane kaldkriips läbi nulli näitama, kui nad nulli? Ei, me sellest aru saada. Jah, tänu, et nad on head. OK, midagi muud? Kas keegi taha mina-- nii et ma arvan oleme joosta natuke ajas. Kas sa tahad, et näha veel üks, või? Õpilane: RandomInt. [01:21:29] DAVIN: RandomInt, OK, täpselt. Nii et teeme RandomInt. Ma teen seda siin. Nii RandomInt on tegelikult palju lihtsam. Ma arvan atoi on ilmselt kõige raskem et oleme palunud ka varasematel aastatel. Õpilane: [kuuldamatu]. [01:21:46] DAVIN: Mis on? ROB: Näen, kui see on selline on nähtav siin. DAVIN: Kas see? ROB: ma ei arva, et see on going-- ma arvan see läheb nõrgub paremale. DAVIN: OK, nii et ma teen seda. Ja siis lihtsalt pane see ekraanil. [01:21:56] ROB: Hea küll. [01:21:57] DAVIN: Sa tahad olla minu kirjutaja? [01:21:58] ROB: Jah. [01:21:58] DAVIN: Nice. OK, ma saan kustutada selle? [01:22:02] Õpilane: Jah. [01:22:04] DAVIN: See on nii raske. (Laul) Sa teed mida sa teed. Ja seda, mida sa ei tee. Hea küll. [01:22:19] OK, kui ma õigesti mäletan, on viktoriin RandomInt oli nagu OK, ma annan teile kaks numbrite jms ja b. Ja ma tahan, et sa mulle RandomInt vahel need numbrid. Nii RandomInt läheb võtma kaks numbers-- nii RandomInt-- ja see on läheb tagasi int. [01:22:41] Mis siis tagastatav väärtus? Ma lihtsalt ütlesin. Int, eks? Kas sulle meeldib see, ja siis on see aega võtab kaks ints. Nii see läheb võtma int ja int b, niimoodi. Mida RandomInt on teha, on, et see läheb tagasi mõne juhusliku väärtus nende kahe väärtusi. Nii et see saab olema suurem kui, väiksem kui b. Nii et ma arvan, et sa saab ilmselt eeldada, et on väiksem kahest väärtusest. Nii et kui me tegeleme juhuslikkus, mis funktsioon me oleme näinud, et annab meile juhuslikult asju? Õpilane: Drand. DAVIN: Drand täpselt. Nii et sa lähed, et ilmselt soovite kasutada oma drand. Nii saab öelda, int juhuslik, ja me lihtsalt öelda, et see võrdub 0 kohe. Ja need me ei kavatse öelda, OK, juhuslik võrdsete drand 48. Ja mida see tagasi? Mida see funktsioon annab teile? [01:23:43] Õpilane: 0 ja 1 vahel. [01:23:45] DAVIN: Jah, 0 ja 1 vahel. Nii see on- [01:23:48] ROB: Ja see on-- ma arvan Me ei ütle teile seda. Nagu, mida saab kasutada drand 48. Seda on võimalik kontrollida mineviku eksami. Aga me tahaks ilmselt öelda, et sa saab kasutada drand 48, mis tagasi float 0 ja 1 vahel. [01:23:58] DAVIN: Jah, jah, ma olen päris kindel, et eksami ta ütleb, siis ilmselt soovite kasutada drand, jah. Nii see läheb tagasi mingi väärtus 0 ja 1 vahel. Ja mis siis on teil kavatse teha tahad? Noh, sa tahad korrutada by-- oodake, ma arvan, et see on nagu see, vabandust. Ma lihtsalt seda teha. Ma ei tea. [01:24:19] Nii b miinus a. Miks b miinus? Ütleme drand annab sulle tagasi int-- OK, ma lihtsalt ei puhata, nii pluss. Mida does-- y b miinus a. Ütleme, et drand annab sulle tagasi suurim väärtus võiks see olla teile. Mida see saab olema? Õpilane: 1. [01:24:43] DAVIN: 1, eks? Nii et kui see on 1, ja sa oled korrutades seda b miinus, noh, see on lihtsalt vahe miinus A. Ja kui sa siis veel, et tagasi peale, mis on mis? See on põhiliselt b. Kas on mõtet? [01:24:57] Õpilane: Jah. [01:24:59] DAVIN: Nii et kui see on maksimaalne Väärtustame see võiks olla, see saab olema 1. Ja siis see on lihtsalt vahe kaks. Lisa kohta, nii et see on läheb tagasi juhuslikult. Ja nurka nii, et drand annab sulle tagasi 1 juhuslik lihtsalt tuleb tõhusalt b. Aga see on maksimaalne võimalik. Nii et kui see saab olema väiksem kui et nii oletame, et see on nagu 0,9, nii siis 0,9 korda b miinus läheb vähem kui vahe b miinus a. [01:25:33] Ja siis, kui sa lisada, et edasi, siis see väärtus on läheb üle, sest olete lisatud midagi peale selle, kuid see saab olema väiksem kui b. Nii et sa lähed, et saada juhuslik number, sest olete helistaja drand. Ja see rand, mis juhuslik arv on saab olema kusagil vahepeal ja b. Kas on mõtet? [01:25:50] ROB: Just panna see konkreetsed numbrid, et oletame, et me tahame valida juhusliku arvu vahemikus 7 ja 10. Nii b miinus on meie valik. Nii on vahemikus kolm numbrid tahame valida. Ja siis korrutatakse et vahemikus 0 ja 1 1, kui see siis annab meile some-- oletame, et see annab meile 1.5. [01:26:07] Siis 1,5, me tahame minna 7.-10. Nii 1,5 pluss 7 toob meid tagasi meie 7 kuni 10 vahemikus. Ja siis me selle säilitamist sees täisarv, nii et see kärbitud alla 8. Ja siis me lihtsalt tagasi seda. Nii b miinus on meie valik. nihutab see üles võetud numbrid et me tahame selles vahemikus. Nii vahemikus 7 ja 10, ja siis me võib naasta mida me lõpetame. [01:26:30] DAVIN: Jah, tore. [01:26:32] ROB: Aitäh. [01:26:34] DAVIN: Jah, mis teoksil? [01:26:35] Õpilane: Kas võtame ta igasugustele ASCII vigu we're-- kui drand on tagastamise float [kuuldamatu]. [01:26:42] ROB: Nii nagu Rob ütles: kuna juhuslik ei ole int, nii drand saab sularahaga. Nii ja siis korrutab välja. Te võite saada mõned omamoodi float numbrid. Ja siis see läheb kärpida. [01:26:51] Õpilane: OK. DAVIN: Jah. ROB: Ja kui koostaja oli hoiatada sa umbes, nagu, täpsuse kadu, lihtsalt visatakse int sisse seal, ja siis on see hea. DAVIN: Jah? [01:27:02] Õpilane: kas see on Sama tõenäosus saada, nagu, b või [kuuldamatu]? [01:27:08] ROB: Nii on-- ma olen tegelikult wondering-- on RandomInt peaks olema number on väiksem kui b? Like, kui see on vahemikus 7 10, millised on võimalused? 7, 8 ja 9 või 7, 8, 9, 10? DAVIN: ma unustan. On probleem set-- [01:27:19] ROB: Ma arvan, et see on 7, 8, 9. [01:27:20] DAVIN: see konkreetselt ütleb üks kaasava ja üks eksklusiivne. [01:27:22] ROB: Jah. [01:27:23] DAVIN: Aga ma don't-- olen not-- [01:27:23] ROB: Nii et ma arvan, et need on ei kuulu, mispuhul seal on võrdsed tõenäosus 7, 8 ja 9. Ei ole tõenäoline, et 10. DAVIN: Jah? Õpilane: Mul on üks küsimus. Me tahame määratleda funktsiooni tagasi mitte üks väärtus, kuid massiivi. Siis milline oleks süntaks pärast tagasi? [01:27:41] DAVIN: OK, nii, siis would-- pärast tagasipöördumist? Ütleme, et teil oli kuulutatud massiivi kusagil seal üleval. Siis oleks lihtsalt tagasi nimi massiivi. [01:27:49] Õpilane: OK, tänan. Siis lihtsalt tagasi koos a-- DAVIN: Oh oota, nii kahju. Küsimus oli selles, kuidas sa tagasi massiiv. [01:27:54] ROB: Kuigi see ei saanud tuleb massiivi deklareerida virna või midagi sellist. See peaks olema midagi malloced, sest malloc kuidas sa saad ümber automaatne mälu eraldamise. [01:28:01] DAVIN: Jah. ROB: Kuidas sa saad ümber kohalikku ulatust. [01:28:09] DAVIN: Aga sa oleks lihtsalt tagasi oma name-- [01:28:11] Õpilane: [kuuldamatu] see ei ole üks väärtust, näiteks kaks numbrit, nii [Kuuldamatu]. [01:28:18] DAVIN: Sa ei saa naasta mitu numbrit. Sa ei saa, nagu, return-- [01:28:20] Õpilane: Ma rääkisin naasmist massiivi või midagi sellist. [01:28:23] DAVIN: Jah, nii et küsimus on selles, ma saan tagasi mitu väärtust. Sa ei saa naasta mitu väärtust. Sa ei saa teha, nagu, tagasi siis tagasi b või midagi sellist. Sest pärast naasete, siis tagasi välja funktsiooni. Ja siis funktsioon on tehtud, ja nagu Rob ütles, on pinu. [01:28:35] Nii et kõik, mis mälu lihtsalt muutub tagasi arvutisse. Kõik saab unustatud, põhimõtteliselt. Nii et kui soovite naasta mitme väärtused, pead uuesti massiiv, Ja kuidas sa seda teha on mallocing. Ja siis tagastab x niimoodi. Põhimõtteliselt sa lihtsalt tagasi nime. Ja kui sa tagasi midagi sellist, sa oled tegelikult ei tagastades väärtus. [01:28:53] Ütleme, et sa salvestatakse väärtuste massiivi. Sa ei ole tegelikult tagastades need väärtused. Like, kui ma tagasi int, olen tõesti naasmist koopiad väärtusi. Aga kui ma oleksin tagasi midagi sellist, Ma naasmist viide nende väärtused. Nii et ma naasevad põhiliselt mälu aadressi väärtusi. Kas on mõtet? Õpilane: Jah. DAVIN: Nice. Jah? [01:29:13] Õpilane: Kui sa oled kasutades drand siin, sa pead panema srand enne seda? [01:29:17] DAVIN: Ei, ei, ma ei arva nii. [01:29:20] ROB: Jah, nii et sa pead midagi öelda srand? Vaikimisi sa kunagi öelda, srand üldse on lihtsalt teha srand null. Nii drand omal tahtel töö. Ja see automaatselt külvamine Praegune aeg on see, mida ta kasutab. DAVIN: Jah? Õpilane: Kas sa [kuuldamatu] numbrid? DAVIN: Jah, saate küll. Õpilane: Nii võid öelda, nagu, 4 korda 2. Asi on selles, sa ei saa eeldada, siis int on neli baiti. Ainult-- [01:29:51] DAVIN: Ma mõtlen, et viktoriin saate. [Naerab] [01:29:54] ROB: Mm, ei. DAVIN: Jah, jah saate. Kui nad teilt küsida, kui suur int on, sa ei saa olla, nagu, nelja või kaheksa. ROB: Oh, nii et kui Küsimus on konkreetselt jms, kui see on kodeerimise probleem, sa peaksid ütlema suurus int. Kui see on tabelis või ta ütleb, kui palju baite sa ei peaks täitma suurus ints. [01:30:08] Üliõpilased: [naerab] [01:30:18] DAVIN: Õigus, miks on suurus int siin oluline? Nii nagu, kui me ei kavatse 32-bit töötleja või midagi sellist, siis saab olema neli baiti. Aga mõned uuemad kraami, see võiks olla, mida? See võib olla kaheksa, eks? Nii see-- kui sa lihtsalt raske koodi neli, siis mõned masinad, et see töötab. Mõned masinad, siis see ei tööta. Aga kui mängust oleme nagu kui suur on int? Pane neli. ROB: Õigus. DAVIN: Jah? Õpilane: Nii sellepärast, et me kuulutab [Kuuldamatu] sees funktsiooni peaks me paneme 3 sees, et funktsioon? Või kas me kasutame seda väljaspool? DAVIN: Võite kasutada seda väljaspool seda funktsiooni. Ta küsib tasuta. [01:30:49] Õpilane: Lose lugu kus [kuuldamatu]. [01:30:51] ROB: Oh, tasuta ei happen-- see on osa maagia malloc on see, et sa ei ole piiratud kohaliku ulatusega. Sul on täielik kontroll selle üle kui kaua teie muutujad elada. Nii me nimetame malloc siin on, võib see olema täiesti eraldi funktsioon. See võib olla 10 tundi hiljem et me lõpuks helistada tasuta. [01:31:08] DAVIN: Nii näiteks jms, paar nädala pärast, kui sa lõpuks teha oma sõnaraamatu speller psets, sa lähed on mõned funktsioonid, mida loob tonni sõlmed. Nii et te mallocing tonni Sõlmede seda funktsiooni. Ja siis hiljem eraldi funktsioon, sa oled tahavad, et vabastada kõik need sõlmed. Nii saab sõna otseses mõttes lihtsalt läheb tasuta osuti, nii mälu aadress mida sa malloced. Ja see saab trahvi. Sul ei ole vaba, jms, sama funktsiooni. Jah? [01:31:30] Õpilane: Nii malloc muutuja [kuuldamatu] väljaspool? Kas see, mida sa räägid? DAVIN: Oota, öelda? Vabandust. [01:31:38] Õpilane: Kui malloc muutuja saab vabalt kõikjal koodi siis saab neid juurde kõikjal koodi? Kas olete kursis nende kohalikud? [01:31:45] DAVIN: Oh, ta küsis: nagu muutuja, like-- [01:31:51] ROB: Nii et sa ikka vaja on mingisugune viide et malloc blokeerida mälu. Nii et siin me oleme naasmist x. Õpilane: Oh. ROB: Kui me ei tagastanud x siin, ja see oli lihtsalt tühine, siis ei oleks meil ligipääs osuti, mis oli malloced, ja see on lekkinud mälu. [01:32:05] Õpilane: OK. [01:32:06] DAVIN: Nii nagu, ütleme, et sa on see, nagu, siin. ROB: Ei DAVIN: Minu peamine ülesanne, ma ei saa lihtsalt nimetame seda x ja olema, nagu, OK, Selles funktsioonis, ma tegin seda. [01:32:14] ROB: Õigus. [01:32:14] DAVIN: Ma lähen kutsun x, nagu, pea- või midagi sellist. Sa ei saa seda teha. Sa lähed tagasi midagi. Aga mida sa lähed tagasi? Sa lähed tagasi mälu aadress. Ja kuna sa tagasi mälu aadress, mida saab kasutada ka mujal. Veel küsimusi? Jah? [01:32:28] Õpilane: Kas funktsioon eespool on tšeki [kuuldamatu]? [01:32:33] DAVIN: Miks ma ei pea seda tegema? Õpilane: [kuuldamatu]. DAVIN: Sest sa oled ei mallocing midagi. Nii, et see not-- yeah, see on ei meeldi string s. See on osuti kuhugi. Need on vaid väärtusi. Õpilane: OK. DAVIN: Jah. Veel midagi? ROB: Jah? Õpilane: Aga kui sa [kuuldamatu]? [01:32:55] ROB: Nii et vabastada mälu, siis ütleksin siin. Nii et x on meie kursor mäluploki. Me vabastada, et osuti. Ja me ei pruugi seda teha siit. Me saame seda teha igal pool. Aga sa ainult helistada tasuta midagi, mis malloc tulu. Nii malloc, siin, tagasi mis on salvestatud x. Nii et meil on võimalik helistada tasuta x. Kõik viimase küsimusi? [01:33:20] DAVIN: iga viimase küsimusi? Jah? [01:33:22] Õpilane: Vabandust, kas te uuesti seletada miks sa vabastaks seal on? Miks [kuuldamatu]? [01:33:26] DAVIN: Sest siin? [01:33:27] Õpilane: Jah, nagu peale. DAVIN: Sa ilmselt ei taha tasuta siia. ROB: Sa ilmselt ei teeks. DAVIN: Jah, et see ei tee midagi. See oleks nagu, luua mälu, teha asju see, ja siis kohe unusta see, jah. [01:33:37] ROB: Aga me võiksime teha, nagu, siin mingil põhjusel. Me võime öelda, int star y võrdub tagastamise massiiv. Kas mõned asjad y, võibolla printida sisu. Ja siis lõpuks, me oleme teinud. Meil saab tasuta y. Õpilane: [kuuldamatu]. DAVIN: Kui ma keri? Aitäh. ROB: Nice. [01:34:02] DAVIN: OK, see on kõik. ROB: Hea küll, hea. Õnn kaasa. [01:34:05] DAVIN: Kui teil on küsimusi, kirjuta meile. Õnn kaasa.