ZAMYLA Chan: Hei, kaikki. Tervetuloa osiosta. Tänään on vain olemaan kaikki tietovisa tarkistaa tietokilpailun keskiviikkona. Toivottavasti kaikki muistavat, että heillä tietokilpailu keskiviikkona. Ja jos ei, hyvin, nyt olet muistutti. Joten keskiviikko varmista näytät ylös luokan tai muun majoituksen tarpeen. Te tulevat olemaan mahtava. Se tulee olemaan suuri. Ja aion tehdä kaikkeni auttaa valmistamaan sinua tänään tietokilpailun nyt. Ja myös silloin, kun et tiedä, on tietysti laaja katsaus istunto tänään kello 7 Luoteis-labs huoneessa B103. Voit nähdä minut jälleen encore kuin Aion johtaa osallistuu tarkastukseen istunto myös. Joten jos et voi saada tarpeeksi minusta Nyt voit tulla jälleen tänä iltana. Okei, joten asiat ensin. Vain joitakin tietokilpailu vinkkejä, ennen kuin me todella sukeltaa sisään arvostelua. Niin kuin minkä tahansa tentti, käytännössä varmasti auttaa sinua ulos. On tentit menneisyydestä kuusi tai seitsemän vuotta siellä, niin se on paljon harjoittelua materiaalia teillä on. Ja itse asiassa, tänään on oikeastaan ​​vain aiotaan mennä mitään aiheita että teillä kysymyksiä sekä kuten toiminnan kautta käytännön ongelmia alkaen tietokilpailu nolla. Niin minä oksentaa tietokilpailu nolla viime vuonna täällä, ja voimme työskennellä läpi ongelmia että te haluaisi. 

Niin harjoitellaan. Aiot alkaa tehdä sitä tänään. Koodi paperille. Niin joo, jos kaikki voisi itse saada ulos paperi, joka tulee olemaan suuri, koska et ole menossa on tietokonetta tentti ja kirjoittamisen koodia käsin on usein paljon vaikeampaa kuin voisi odottaa. Olet tottunut vain näkemistä ja kirjoittamalla, ja sinulla on kääntäjän auttaa sinua, kun sinulla on virheitä, mutta et saa, että tentti. Joten se on todella tärkeää todella voitava kirjoittaa koodia, ja että lihas muisti tekee se käsin todella auttaa sinua. 

Joten saamme vähän lähelle. Se on maanantaina. Tentti on keskiviikkona. Mutta jos sinulla on aikaa, ehdottomasti ottaa yksi tentit viime vuoden tai edellisvuonna alle aikarajoitus on tunti ja puoli. Vain tyrmätä tunti ja puolet ajasta, ja istua itse alas, ja vain työn kautta ongelmia kuin olisit itse ottaa se, koska yksi suurimmista asioista, jotka me kuulemme tietokilpailuja on, että ne ovat hyvin pitkiä. Se on paljon materiaalia. On paljon kysymyksiä, ja useimmat ihmiset eivät voi lopettaa. Tiedän, että olen täysin ei valmistunut Oma tietokilpailuja kun otin luokassa. 

Että merkinnän, koska vähemmän mukava jakso, Ymmärrän, että tämä kurssi on tarkoitettu palvelemaan ihmisiä kaikilla tasoilla. Koko syy meillä voit jakaa vähemmän mukava, välimaastoon, ja mukavampaa on Tällainen oikeudenmukaisemmaksi. Ja jos olet vähemmän mukavaksi, se on ei välttämätön sinänsä saada kaiken. Kuten jos olit saada kaiken, olet luultavasti olla mukavampaa osiosta. Joten ilmeisesti eivät ehkä itsenne liian kovaa, jos et voi lopettaa tentti. Ota se minulta, en tehnyt sitä. Olen edelleen rikastamo. Olen edelleen auttaa opettaa kurssin. Sinun on hieno. Selvä. Ja lopuksi, nukkua. Ilmeisesti mitään tentti me aina sanoa. Cramming iltana ja ei saa mitään unta ei not-- ehkä jos se toimii sinulle, mene siitä. Mutta valtaosa ihmiset, saada nukuttua, kerroit aivosi levätä ja toipua ennen tulossa tenttiin todella auttaa sinua. Lisäksi siellä melkein varmasti karkkia tentti, joten sinun täytyy katsoa eteenpäin. Te aiotte tehdä suuria. Se tulee olemaan hieno. Ja nyt seuraavan tunnin ja puoli I yrittää ja prep sinua niin hyvin kuin pystyn. 

Joten minulla on diat pohjimmiltaan kaikki osastot asti. En aio käydä läpi niitä kaikkia, koska se ei ole toteutettavissa puolitoista tuntia sekä sillä työn kautta käytännön ongelmiin. Joten sen sijaan minulla on lista aiheista. Nämä ovat kaikki asioita, että voisimme tietokilpailu sinulle. Jos on jotain että todella hyppää ulos että haluat mennä yli, että te haluavat minun mennä yli käsitteellisesti, Voin yrittää ja antaa yleiskuvan siellä. Tai jos haluat hypätä suoraan sisään tekee käytännössä ongelmia yhdessä, voimme tehdä sen. Se on sinun kaverit. Ei ole, että monet teistä. Joten se mitä kaverit haluavat tehdä. Haluan olla kaikkein hyödyllistä kohti teitä. Niin minä annan sinun vain katsoa. 

Yleisö: Yksi asia on kaavio, että pidämme sanovat pino ja keko. Vain koko ajatus että ja mitä se tarkoittaa. ZAMYLA Chan: Joo, OK. Tämä kaikki on käynnissä loppuun, joten haluaisin selata. 

Yleisö: Emme tarvitse tee se nyt, mutta mitä. 

ZAMYLA Chan: Oliko anything-- tämä yksi. Onko tällainen sumea ihmisille? Yleisö: Joo, toinen että. Ja me voimme myös tehdä puskurin ylivuoto? ZAMYLA Chan: Buffer overflow? OK. Joten puskurin ylivuoto on melko helppo vain puhua. Se on pohjimmiltaan puskuroi ajattelee Joissakin joukko muisti, että sinulla on, eikö? Olemme yleensä puhua puskurin ylivuoto et ole tarkastaa, miten paljon käyttäjä on ottamassa, eikö? Ja ajatuksena oli puskurin ylivuoto on he ovat ryhtymässä kaukana liian paljon tietoja tilaa että olet varattu heille, eikö? 

Joten jos sanot, antaa minulle viestin, että olemme olettaen, että he aikovat antaa meille kohtuullinen pituus viestin. Ehkä pari riviä, vaikka mitä. Joten emme tarkistaa. Sen sijaan he ruokkivat meitä Koko kirja, joka on viesti, ja se vuotaa määrä tilaa, että olemme varattu tähän. Ja mitä tapahtuu on se voisi korvata paikkoja, se ei ole tarkoitus. 

Joten tiedän professori Malan sanoi jotain puskurin ylivuoto hyökkäyksiä. Niin, että jos käyttäjä syöttää jotkut valtava tietomäärä on toiveita että hän korvaa ohi lopussa oman puskuria ja korvaa something-- ihmettelen Olen meillä on nuo diat täällä. En usko, että meillä on näitä dioja tänne. Mutta pohjimmiltaan hän korvaa jonkin osan muistista jonka avulla hän pääsy osia tietokoneen että et yleensä ole pääsyä. 

Suurin juttu puskurin ylivuoto on vain ymmärtää, että se tapahtuu, kun et ole tarkistaa, kuinka paljon käyttäjä on ottamassa. Kun et ole sellainen turvaaminen vastaan. Ja Yksinkertaisimmillaan asia, se on vain käyttäjätunnuksesi syöttämällä valtava määrä Tietojen yritys korvataanko joitakin turvallisuus osan muistin. Sitä se vain on. 

Joten täällä, pino ja keko. Periaatteessa kaikki tämä on vain edustus muisti ja missä asiat on tallennettu. Se on todella sellainen kaikki mitä sinun tarvitsee tietää. Suurimmista asioista, jotka sinun täytyy tietää, ovat that-- anna minun nähdä, jos siellä better-- täällä. Joten tämä on pino täällä. 

Niin pino on tekemistä kaikki toiminnot että soitat kulloinkin. Ja mikä on tärkeää muistaa menossa pois viime viikolla malloc on, että et todellakaan ole välttämätön sen hallintaansa. Se kaikki riippuu siitä, milloin tietyt toimintoja ei suoriteta. Ja kun ne pystyvät, he on mitä kutsutaan pino kehyksiä jotka menevät täällä. 

Niin se kaikki sellainen tapahtuu ilman mitään todellista panosta sinua. Kirjoitat ohjelma, ja annat sen käydä, ja pino sellainen vie huolen itsestään, koska se tarvitsee. Joten jos pääasiallinen soitat kuutio, joka välitetään täällä. Se tulee luoda kehys. Mutta ei ole mitään sinua nimenomaan tehdä luoda että pinokehys muut kuin kirjoittaa toiminto aluksi, OK? 

Mikä on sellainen alla ohjaus on kasa malloc. Joten jos malloc jotain, käytät muisti kasaan. Ja se on muisti, että sinua on puutteessa parempi sana, nimenomaisen valvoa, koska muistan kanssa malloc se on periaatteessa olemassa kunnes sanot toisin. Niille teistä, jotka Katselin jakso viime viikolla, se on siellä ennen kuin kerrot sen mennä pois. Se on siellä, ellei muuten kertoi ei. Joten keko on vain jotain voit ajatella kuten muistin että sinulla on valvoa. Ja ne ovat juuri kaksi eri suuria asioita. 

Muu kuin, että sinun ei pitäisi olla huolehtia liikaa siitä, pino ja keko kysymyksiä tai tyypillisesti vain jos sinulla on paikallisia parametreja tai toiminto se olisi pinoon tai kasaan. Ilmeisesti tässä tapauksessa se olisi pino. Jos olet mallocing jotain, Missä se tulee? Kasaan. Jos tarkastellaan käytännössä tietokilpailuja, ne ovat yleensä tyyppiä kysymyksiä että heillä on. 

Sinun ei tarvitse huolehtia liikaa siitä. Joudut selkeämmin noin pino ja keko myöhemmin tai muissa CS luokissa. Joten vain ottaa sellainen yleinen käsitys siitä, mitä tämä on on hyvä, jonka minä juuri sellainen meni yli. Muita aiheita? Kyllä? 

Yleisö: Voitko mennä yli Nata taas todella nopeasti? ZAMYLA Chan: Osoittimet? Haluatko käsitteellinen yleiskatsaus viitteitä vai oletteko harjoitella viitteitä? Yleisö: Kind of kuten syntaksin. ZAMYLA Chan: syntaksi? Joo. OK, olemme pääsemässä sinne. Joo, niin tämä on juuri sellainen asia kun on rekursiivinen funktio, joka kerta, että rekursiivinen funktio on nimeltään, se vain lisää muiden pinokehys. Melkeinpä esimerkki miten et todellakaan valvoa kehykset pino. 

OK, osoittimia. Okei, joten luomalla osoittimia. Muista, että vain kirjoittamalla tähti. Joten mitä tietojen tyyppi aiot osoittavan. Joten tämä olisi osoitin int. Tämä olisi osoitin char. Tämä olisi osoitin kellua. Joten se on periaatteessa mitä tahansa haluat sen osoittavan, tähti on miten julistaa osoitin, OK? 

Mutta sitten ilmeisesti saa hieman hankalaa, kun sinulla on osoitin tai olet tähti riippumatta. Niin suuri ero on kun olet declaring-- joten meillä on some-- niin tämä vie jonkin int tähden. Joten tämä on jonkin verran osoitin kehottaa x int, eikö? Joten muista mitä tämä tekee on tämä vaatii järjestelmän X. Ja tämä on menossa on joitakin osoite, eikö? Joten sanotaan nyt vaikka tämä on meidän osoite. Osoittimet pidä osoitteet. Joten mitä tämä sanoo, että tällä sijainti, olemme tallentamiseen int. 

Joten toinen tapa voimme ajatella tämä on, että tämä on jonkin verran int. Emme ole osoitettu sitä vielä mitään, mutta se on vain int. Joten voimme tehdä on, jos emme tähti x on 5, tämä tulee 5, OK? Tämä kertoo mennä mihin tahansa X on osoittaen, niin mene tähän osoitteeseen ja tehdä se sama 5. Joten asetamme 5 tähän osoitteeseen, eikö? 

Ja sitten jos teet tämän, tämä antaa meille osoitteen. Tämä on osoite, operaattorin. Niin mikä on osoite X? Emme tiedä. Emme ole määritetty sen osoite. Voisimme sanoa, että se some-- nyt annoimme se osoite, niin osoite on 4. Ja oikeastaan, jos käymme läpi jotain näin, sellainen mitä teimme. Joten toiminnan kautta here-- löydän se auttaa, jos vetää ulos viitteitä. Jos olet teidän tentti, I Suosittelemme piirustus laatikoita. 

Joten tämä ensimmäinen, int x on 5. Tämä tarkoittaa vain sitä, meillä on joitakin laita muistiin, joka on 5, eikö? Ja meidän pöytä täällä kertoo että se on osoitteessa 0x04. Ja sitten me luoda jonkinlaista osoitin. Joten rikkoa tämän alas yksi kerrallaan. Joten tämä luo joissakin laatikko on int, eikö? Se tulee pitää jotkut osoite sen. Joten tämä on jonkin verran osoitin. Ja tämä liitu on todella pieni. Joten meillä on joitakin osoitin täällä. Ja meidän pöytä kertoo eli osoite on 0x08. Cool. Ja olemme määrittämällä se osoitteeseen x. 

Muista, osoittimet pidä osoitteita, OK? Joten jos haluamme säilyttää x, meillä on käyttää osoitetta operaattori, joka on & -merkki, saada osoitteeseen x, joka tässä tapauksessa, 0x04. Ja sitten, jos meillä Joissakin int Kopioi tämä vain luo joitakin muita kohtaan, jotka omistaa int nimeltään kopio. Ja jos asetamme sen this-- Tämä on siis viitataan siihen. Niin se sanoo mennä mihin tahansa osoittimen pitää. Pointer omistaa tähän osoitteeseen joten menemme tänne, ja sanomme, OK, mitä se sisältää? Se on 5. Joten kopio tulee 5. Järkeä? 

Mitä jos olen yrittänyt antaa tämä vain osoitin. Mitä osoitin todella tasa-arvoisia? Se olisi vain mitä tahansa osoitin on, eikö? Ja mitä sitten jos tein tämän? Mikä kopioivat nyt? 

Yleisö: 0x08. ZAMYLA Chan: Jep, osoite meidän osoittimen. Mitään osaa, että määrittelyä on uudelleen selittää? Cool. On varmasti hyvin hauska ongelma tietokilpailu yksi että voimme kyseisenä saat lisää harjoitusta. Kaverit viime viikolla voi kertoa se ei ollut niin paha. Saimme läpi koko kaavio, ja kaikki oli hienosti. 

OK, niin se on yleiskatsaus syntaksin osoittimia. Suurin asia on ymmärtää, miten luoda niitä, tehdä linkitykset, ja osoite, OK? Cool. Mikään aiheista ennen sukellamme käytäntöön. Myös jos olemme menossa läpi käytännön ongelmat ja siellä on jotain haluat kertaus, voimme tehdä niin. Onko sinulla jotain? 

Yleisö: structs ja liittyvät luettelot. ZAMYLA Chan: structs ja liittyvät luettelot, OK. Niin structs. Olemme itse asiassa menossa tänä iltana liikaa. OK, joten structs. Structs ovat pohjimmiltaan vain tapa, jolla voit pitää useita arvoja eri tyyppejä. Joten array olemme ahdas yhteen tietotyyppi. Meidän joukko on joko vain olla numeroita, tai vain olla merkkiä, tai vain olla kellukkeet. 

Mutta ehkä sinun pitää sisältävät enemmän. Ehkä sinun täytyy hold-- jos puhut opiskelija, olet menossa on heidän talonsa, heidän Henkilötunnus, ikä, missä he asuvat, oikeassa? Ja kaikki nämä ovat erilaisia ​​tyyppejä. Joten et voi tallentaa ne kaikki array. 

Joten mitä voit tehdä, on sinun voi luoda struct, joka voit ajatella kuin omat henkilötiedot tyyppi. Joten sen sijaan vain ottaa ints ja sen sijaan vain ottaa kellukkeet, voit olla tyyppiä opiskelija, joka on kaikilla näillä aloilla siinä. Joten miten me alustaa Meidän structs is-- oikeastaan koska minun kirjoittaminen on kauheaa, me aikovat siirtyä kirjoittamalla. Woo. 

OK, joten jos haluamme luoda struct-- Olen juuri menossa sitä tänne. Jättää main tahansa jota aiomme käyttää myöhemmin. Joten miten haluat tehdä se on kanssa typedef struct. Ja haluan vain kutsua tätä opiskelija koska niinhän käytin. OK, joten typedef tarkoittaa olet määritellään uusi tyyppi, OK? On vivahteet huomioon, kun teet vain struct vs. typedef struct. Kaikki aikomukset ja tarkoituksiin, te olette juuri menossa olettaa, että he ovat suunnilleen sama ja vain käyttää typedef struct nyt. Siitä tulee tapa selvemmin oman Seuraava P määrittää mitä nämä erot ovat, mutta en usko, että sinun täytyy pelätä, että juuri nyt. Mielestäni olisi parempi sinulle tiedä, miten luoda yksi, käyttää sitä, ja antaa [? arvo. ?] 

Uudenlainen struct, ja vaadimme sen opiskelija. Niin sen jälkeen olemme tehneet luonnissa, kaikki aikomukset ja tarkoituksiin, joudut tyyppiä kutsutaan opiskelija. Ja voit ajatella sitä yhtä tyyppiä kuten int, tai float, tai nieriää. Se on vain yksi tyyppi, OK? 

Joten tässä yksi, mitä meillä on? Meillä on ehkä nimi. Joten ehkä me haluamme merkkijonon nimi. Ja meillä on ehkä int, joka on tunnus. Ja meillä on toinen että puhelinnumero. Ja olemme some-- katsotaanpa. Mitä muuta voisi meillä on? Meillä on joitakin merkkijono hänen kotiinsa. Kaikki asiat, jotka opiskelija on. 

Joten tämä luo struct nyt. Joten miten voisimme luoda opiskelija? Jos meillä on muuttuja, joka on aiomme puhua Walker täällä, joten have-- olemme vain aio kutsua tätä kävelijä. Hän tarvitsee tyyppi. Mikä on sinun tyyppi? Yleisö: Student. ZAMYLA Chan: Student. Joten tämä vain luo objektin voit ajatella, että kaikki nämä asiat. Olet juuri luonut kävelijä opiskelija. Joten nyt meidän täytyy pystyä luovuttaa kaikki nämä, eikö? Joten ei kukaan muista, miten pääsemme sisällä struct? Yleisö: Aika. ZAMYLA Chan: Aika Aivan. Joten jos halusimme antaa hänelle nimen, voisimme tehdä sen. Ilmeisesti tämä olisi be-- tämä osa tästä olisi olla sisällä tärkein, joten todella haluan tehdä tämän. Julistan edellä main niin että voimme käyttää sitä sisällä tärkein. Joten nyt haluan sen tehdä tunnus, ja me vain tehdä joitakin siellä, ja sitten me antaa talon. Bam. Cool. 

Joten nyt meidän pitäisi koskaan tarvitse käyttää mitään myöhemmin on-- ehkä we-- jos me koskaan tarvitse käyttää mitään, Haluan vain tehdä int kopio tunnus. Ja haluan kopioida Walkerin tunnus tähän. Kuinka saattaisin tehdä sen? Sinun täytyy käyttää sisällä kävelijä struct on [? Siirry sen?] [? E?]. Ja samalla tavalla, että me liitetään se tänne, miten ehkä me käyttää sitä, kun haluamme antaa, että arvo jotain muuta? Yleisö: Walker.id. ZAMYLA Chan: Joo, täsmälleen. Niin se on aika paljon kaikkia sinun tarvitsee tietää structs. Sinun tarvitsee vain ajatella niitä toisen muuttujan. Pohjimmiltaan luo oma muuttujan tyyppi, OK? Voit käyttää sitä julistaa muuttujat millään tavalla. Täällä Walker on edelleen vaihteleva. Se vain on tyyppi opiskelija nyt sen sijaan tyyppiä int, tai tyyppi merkkijono, tai Char. Jos oli helppo tapa puhua noin structs, se on kirjaimellisesti vain Luo oma tietotyyppi että voit ryhmitellä kaikki nämä eri millaisia ​​tietoja yhteen. Onko se järkevää? OK. Tämä ja saatavuuden pisteellä. Melkeinpä kaikki mitä tarvitset. 

OK, jos ei minun PowerPoint mennä? Tässä se on. No tämä on outoa. Aha. OK, viileä. Muita asioita tai me haluat suunnata harjoitella? Käytännössä? OK. Mahtava. Aion poistua. Jos jossain vaiheessa aikana käytännön kysymyksiä, Olen iloinen uudistaa ja käydä läpi asioita. Joten minulla on tietokilpailu nolla täällä. Jos kaverit haluavat vetää sen tietokoneeseen, aivan kuten kestää viisi minuutin selata. Ehkä valita joitakin alkuun kysymyksiä haluat mennä yli. Jos te voi päättää, me vain hitaasti alkavat työskennellä niiden kautta, mutta olen varma, että tulevat olemaan noin kysymyksiä, joita ovat erityisesti innokas puhua ja olla minulle työn kautta teidän kaikkien kanssa. Joten vain mennä eteenpäin ja kestää viisi minuuttia. Selata. Ja tämä on tietokilpailu vuodesta 2013. 

Yleisö: Zero? 

ZAMYLA Chan: Joo, tietokilpailu nolla. Emme tee tietokilpailu yksi kamaa. Teemme, että pari viikkoa. Myös niille, jotka tuli myöhään, meillä on karkkia, joten te haluatte karkkia? 

Yleisö: Toki. 

ZAMYLA Chan: Olen vain menossa ohi noin. Hei, jos te tänne aikaisin, saat enemmän karkkia. Se on hieno. Ben, haluatko karkkia? Haluat joitakin näistä? Mukana on myös Snickers jos joku haluaa Snickers. Jätän ne tänne ja tänne. Rohkeasti. Haluatko enää? Yleisö: Kaikki kunnossa. Kiitos. 

ZAMYLA Chan: Ja minulla oli mukava pieni kasa siellä alussa. Te saada ottamaan tietovisa ja Saan olla tietovisa luokittelu puolue. Se on kaaos. 900 tentit. Se tulee olemaan niin hauskaa. Tulee olemaan suuri. Olen melko varma, että yksi suurimmista henkilökunnan liimaus yönä vuodessa. Onko kukaan tehnyt tietokilpailu nollaa Viime vuonna vielä uteliaisuudesta? 

Yleisö: osia siitä. 

ZAMYLA Chan: sen osien OK. Oliko sinulla on kysyttävää mitään niistä? Yleisö: Olen jo meni virka. Kiitos kuitenkin. ZAMYLA Chan: No, toivottavasti se on vielä sellainen avulias. Milloin kävit virka siitä? Yleisö: Minun TF oli niitä tänä iltapäivänä. ZAMYLA Chan: Oh. Kuka on TF? Yleisö: Fred [? Wujaya?]. ZAMYLA Chan: On niin monia TF: iä. Niin monet. Selvä. Kellään mitään aloittaa, että voin hiukkaakaan alas, että haluamme työskennellä? Oletan osoittimet yksi pöytä. Tsemppiä. 

Yleisö: Ehkä kytkin yksi. ZAMYLA Chan: Eli numero 12? Oletan numero 8 ja 9 ovat luultavasti ne ihmiset haluavat mennä yli. 

Yleisö: 10 ja 11. 

ZAMYLA Chan: Ja te tiedätte saat yhden sivun toteaa, eikö? 

Yleisö: Joo, niin mitkä ovat me saa laittaa siitä. 

ZAMYLA Chan: et saa laittaa mitä haluat. Ja se voidaan kirjoittaa. Sikäli kuin muistan, meidän oli kirjoitettu. 

Yleisö: Voit tehdä takaisin ja molemmin puolin? 

ZAMYLA Chan: Joo, molemmin puolin. Joten jotain kasaan ja [? loppupäätä?] kasaan, juoksu- kertaa. Hyödyllinen. Ehkä vähän asioita viitteitä muistuttaa. Syntaksi asioita. Ottaa aivan kuin luuranko ohjelma voi olla erittäin hyödyllistä. Tiedän, että olen aina unohtanut, mitä Minun piti kirjoittaa int main, koska olen aina vain kopioida liitä Edellisestä P sarja tai se on jo siellä, joten En ole koskaan oikeastaan ​​kirjoitin sen, niin ottaa joka voi olla erittäin hyödyllistä. 

OK, joten miksi emme Aluksi numero 8 sitten? Selvä. OK. Mieti siis ohjelman alla. Joten ilmeisesti kun näemme osoittimet, se on luultavasti hyvä aloittaa piirtäminen, eikö? Haluan tietää, missä kaikki minun iso paloja liitu meni. Tämä on tavallaan ärsyttävää. 

Joten meillä on täällä joitakin swap-toiminto että menee ottamaan kaksi viitteitä. Joten tässä tapauksessa ne pitäisi oikeastaan ​​olla kytkentä asioita vastaan ​​meidän alkuperäinen swap toiminto, joka kesti vain kopiosta. Niin mitä se aikoo tehdä is-- Aloitetaan tärkeimmistä, koska sieltä 1. 

Joten meillä on joitakin int x 1. Meillä on joitakin y, joka on yhtä suuri kuin 2. Ja sitten meillä on joitakin swap että menee ottamaan nämä. Ja katsotaan mitä meillä on täällä. Ja meidän table-- oh boy. Kuinka olen menossa tekemään tämän? Aion tehdä minun pöydän tänne. Tuskin tekee sitä siellä. Tuskin tekee sitä. 1, 2, 3, 4, 5, 6, 7. Ja ne antavat meille, että 1 on 1 ja 1 2. Cool. Mahtava. Niin 3. Ja siellä [? 1.?] 

Selvä. Ja sitten osoite X on 0x123. Ja y on Ox127. Cool. Selvä. Haluan te työtä tämän vain like-- työtä sen kanssa ihmiset ympärilläsi. Toivon, että olisin sanonut, että kun olin perustamiseen. Työstää sitä. Kokeile ja työstää sitä itsellenne pari minuuttia, ja sitten aion työskennellä sen kanssasi. Koska ainoa tapa olet todella menossa oppia on tekemällä sitä itse. Ei hätää. Onnea. 

OK, miksi emme hitaasti aloittaa työskentelyn kautta. Joten jokainen saa sen jälkeen linja yksi, x on 1. Jälkeen linjalla kaksi, x ja y ovat 1 ja 2, eikö? Cool. Joten linja kolme on, jos asiat saada mielenkiintoisia tietenkin. 

Joten mitä olemme tehneet täällä on meillä nyt vaihdettu. Sanomme, että x ja y ovat ne kohdat, tai ne on osoite x ja y, oikeassa? Joten tässä tapauksessa, kolme, mikä on arvo? oli ohitettu, on annettu arvo osoitteen X, eikö? 

Yleisö: 1? 

ZAMYLA Chan: Joten me lisätä sen X? Mikä on x: n osoite? 

Yleisö: 0x123. 

ZAMYLA Chan: Aivan. Mutta mikä on todella osoittaa? Jos me dereference, mitä arvoa olisi se meille. Yleisö: 1. ZAMYLA Chan: Se olisi antaa meille 1, koska se, mitä sanomme ei mennä tähän osoite, kerro meille, mitä arvoa on. Joten mikä olisi B? 

Yleisö: 0x127. ZAMYLA Chan: Aivan. Joten se on osoite y. Ja mitä sitten [? dereference? ?] Yleisö: 2. ZAMYLA Chan: OK, joten nyt neljä. Sanoimme on equal-- hyvin Olemme nyt tehty int temp on yhtä tähti. Niin mitä muutoksia? On vain yksi asia joka muuttaa tässä. Mikä se on? 

Yleisö: Temp. ZAMYLA Chan: temp. Voimme siis kirjoittaa kaikki nämä. Hyvä strategia näiden on vain mietitään mitä muutoksia, koska useimmiten on vain yksi asia, joka on aio muuttaa missään tietyssä kohdassa, OK? Joten olemme määrittäneet temp. 

Nyt ensi vaiheessa viisi, me ovat tehneet tähti yhtä suuri tähti b. Joten mitä muutoksia nyt? 

Yleisö: Star. 

ZAMYLA Chan: tähti, joten kaikki muu pysyy samana. Ja mitä tähti tasa-arvoisia? 

Yleisö: 2. ZAMYLA Chan: 2. Lovely. Mahtava. OK, ja sitten nyt meillä Aloita b on sama lämpötila. Joten ainoa asia vaihtoväli tähden b. Kaikki muu pysyy samana. Ja mikä on tähti b sama nyt? Ja olet valmis syötäväksi. Koska nyt lopussa, jos sanomme x ja y, tiedämme, että tällä point-- me tiedämme, että kun me muuttunut tähti 2, mitä se teki se sanoi OK, kello käsitellä 0x123 täällä, muuttaa sitä. Nyt tämä oli 2. Ja sitten tässä vaiheessa, sanoimme OK, siirry tähti b. Niin mene osoitteeseen 0x127 ja tehdä siitä 1. Joten nyt aivan lopussa, kun me oikeastaan ​​palata tärkein, meillä on todellakin, että x on = 2 ja y on yhtä kuin 1. Jokainen hyvä, että? OK, viileä. Numero 9. Te työtä tämän. Aion perustaa lauta joten voimme tehdä sen läpi. Se tulee olemaan hauskaa. Kivijalat voi olla todella pelottavaa, tiedän. Mutta jos vain ottaa ne yhteen riviin aikaa, he saavat paljon vähemmän pelottava. Selvä. 

Niin tiedät, että tämä on käynyt läpi tärkeimmät ensin, eikö? Alustaa x ja y ja sitten yrittää vaihtaa niitä. Joten vaikka swap on edellä, todellinen tapa se menee on, että olemme menossa läpi tärkeimmät, ja sitten se soittaa jopa vaihtaa, okei? Joten kaikki tietävät sen. 

Joten Kumpaa pidätte kaverit haluavat aloittaa? Onko joku todella varma noin yksi näistä? Tai edes osittain varma? Miksi emme aloita x? Mitä mieltä olemme X on? 

Yleisö: 1. ZAMYLA Chan: 1. Niin miksi on 2. Ja se johtuu siitä, iso ero täällä on se, että me olemme vain kulkee kappaletta, eikö? Emme ohimennen viitataan. Joten vaikka lopussa Tämän ohjelman x ja y ovat pysyneet samana, koska ne ovat vain kopioita swap toiminto. Ne eivät varsinaisesti muutu, eikö? 

Entä, b, ja temp? 

Yleisö: on b. 

ALLISON BUCHHOLTZ-AU: a on b. Joten tässä tapauksessa, oli X, joka on 1, eikö? Joten tässä, nyt kulkea läpi. Joten alussa, ja b ovat 1 ja 2 ja määrittelemätön. Joten alunperin temp saa määritetty, joten lämpötila on 1. on yhtä suuri kuin b, niin saamme 2, ja b on sama lämpötila. Nyt saamme 1. 

Yleisö: Aiemmassa yksi sen vaihtoivat ampersand X ja & -merkki y. Mitä tämä tarkoittaa? ALLISON BUCHHOLTZ-AU: Joten se tarkoittaa, että olet ohimennen viitataan. Niin se tarkoittaa, että olet itse ohimennen osoitteet, joissa x ja y on tallennettu. Yleisö: Mutta et ole vaihtava osoite. ZAMYLA Chan: Et ole vaihtava osoitteet. Olet vaihtamalla mitä niiden sisällä. Kuin mitä kyseisessä osoitteessa, ja siksi se toimii. Versus tässä ohjelmassa täällä mitä teet on luot kopioita. Joten sinulla on x ja y, jotka ovat olemassa omakseen muuttujia täällä. Mutta sitten kun ohitat heidät swap, se on kuin jos luot tämä koko muu joukko. Joten et koskaan itse koskettavaa x ja y. 

Yleisö: Jos et-merkki X on mitä on osoite X, mitä tähti X on? 

ZAMYLA Chan: Ampersand x on, mitä on osoite X, sitten star-- hyvin, Tällöin x ei ole osoitin. Yleisö: Ai, OK. Joten voit tehdä tämän vain koska se ei ole osoitin. ZAMYLA Chan: Oikea. Voit vain tehdä tähti jotain, joka on osoitin. Ehkä voisit tehdä sen asioita, eivät ole, vaan koota että olet tehdä hulluja asioita tapahtuisi. Ja en ole aivan varma, mitä tapahtuisi. Voit aina ottaa osoite jotain, mutta et voi dereference jotain, joka ei ole osoitin. Jos se on järkevää, se on hyvä ero on. 

Joten ei ole liian huono, eikö? Taulukot ovat toivottavasti saada hieman vähemmän pelottava. Selvä. Ah, hauska niitä. Joten nyt, kirjallisesti oman koodin. Joten aion antaa te työtä tästä noin neljä minuuttia, ja sitten voimme puhua tavoista lähestyä sitä. Voit vapaasti puhua ihmisille ympärilläsi. Myös tämä on mielenkiintoinen. Se on kuin kaikki tytöt kohta juuri nyt. Aika jännittävää. Paitsi Chang. Chang ei oikeastaan ​​jaksossa. Mahtava. Perfect. Niin minä annan teille pari vihjeitä. Siinä tapauksessa olet useamman kuin yhden merkin, jossa sinulla on jotain muuta kuten 123 tai 1000 jotain, sinun täytyy pystyä silmukka kautta ja muuntaa kunkin näistä. Joten siellä on pari tavoin voisit tehdä, että mutta olet varmasti olemaan varten silmukka sinne jonnekin silmukkaan niiden kautta, joka on ikään kuin kylkiäinen vieläkin jos soitat strlen, joka on ikään kuin oh ehkä haluat käyttää pituus merkkijonon jollakin tavalla. 

Selvä. Niin mitä te olette mieltä ehkä yksi ensimmäisistä asioista, joita haluamme tehdä? Siellä on pari tapausta täällä meidän tilille, eikö? Joko meillä on jotain, joka on nolla. Mitä meillä on? Tapauksissa. Null. Meillä on niin, että sillä on jotain muuta kuin 09, eikö? Joten sanokaamme se on kirjaimia. Tai meillä on tapaus, joka on voimassa. Kolme tapausta ajatella. Niin mikä mielestäsi voisi olla helpoin hoitaa ensin? Yleisö: null. ZAMYLA Chan: tapaus on nolla. Joten mitä me teemme siellä? Yleisö: [kuulumaton]. ZAMYLA Chan: Joo. Ja mitä haluan tehdä? 

Yleisö: Return 0. 

ZAMYLA Chan: Aivan. Mahtava. OK. Joten nyt niin, että se on kirjaimet ja siinä tapauksessa, että se on voimassa. Voimme todella huolehtia Tämän yhden silmukan, OK? Joten yksi tapa tehdä it-- mikä voisi olla Yksinkertainen tapa tarkistaa, jos se on voimassa. Meidän pitäisi mennä läpi jokainen kirjain ja mitä? 

Yleisö: Tarkista, onko se in-- 

ZAMYLA Chan: Oikea, voit tarkistaa jos se on välillä 0 ja 9, eikö? Ja sitten kun on kyse että se on voimassa, olemme ehdi iteroidessaan kautta meidän string anyways, eikö? Joten miksi emme yritä yhdistää ne yhdeksi. Aiomme kerrata kautta ulos merkkijono, ja niin me tehdä sen, me aiomme ensin tehdä tarkistaa, jos tämä kirje tai jos merkki on voimassa. Jos se on, me aiomme tehdä toiminta että meidän täytyy muuttaa sitä. Muuten se tulee palauttaa 0, eikö? 

Joten ennen kuin teemme sen, me varmaan jokin muuttuja että voimme palata lopussa että tulee olemaan meidän todellinen arvo. Joten emme aio alustaa Joissakin arvo on 0. Ja se, miten aloitamme. Joten aion päästä eroon tästä. Joten miten aiomme kerrata tällä merkkijono. Yleisö: For silmukka. ZAMYLA Chan: varten silmukka. Joten mitä meidän on? 

Yleisö: i on 0. ZAMYLA Chan: Mm-hm. Ja mitä me iteroidessaan asti? 

Yleisö: str pituus n. 

ZAMYLA Chan: OK, nyt muistan on olemassa parempi tapa. [Äänetön]. 

Yleisö: Joo, me voimme tehdä n on. ZAMYLA Chan: Aivan. 

Yleisö: i on pienempi kuin n. ZAMYLA Chan: Ja miksi haluaisimme tehdä niin? Muistatko syy? Yleisö: Meidän täytyy laskea uudestaan. ZAMYLA Chan: becasue tällä tavalla vain laskea StrLen kerran. Jos et i on pienempi kuin strlen s, se tarkoittaa, että se laskee pituus joka kerta juokset varten silmukka, joka ei ole valtavia kustannuksia energiaa, mutta se on paremmin käytännön kokeilla ja tehdä tuollaista kerran. Ellei ehkä sinulla on hullu jono joka on muuttumassa joka iteraation. Mutta jos se on pysyä samana, tallenna se. Selvä. Ja sitten minä plus plus. Mahtava. Olemme matkalla. Yleisö: Todella nopeasti. Ensimmäinen, joten sanokaamme me vain Teinkö alle strlen s, he luokittelu meitä suunnittelu ollenkaan tai vain oikeellisuudesta? He eivät ole. Olemme luokittelun oikeellisuutta varten tietokilpailuja sikäli kuin tiedän. En voi tehdä kokonaisuudessaan takuu, mutta suurimmaksi osaksi, Valtaosa on oikeellisuutta, koska olet alle paljon aikarajoitus. Suunnittelu tarkoittaa tyypillisesti sinulla on aikaa ajatella noin eleganssia tilanteesi. 

OK, joten olemme iteroidessaan kautta. Joten meidän täytyy joko tarkistaa onko tämä merkki on voimassa tai jos voimme tehdä meidän normaali [? -i?] -toiminto. Voimme huolehtia siitä, mikä joka on toinen. Joten miksi emme take-- jos joku voi ajatella noin tapa tarkistaa onko tämä pätevä. Tiedämme, että se tulee olemaan Joissakin jos kunnossa, eikö? Ja muistakaa tämä on ASCII, niin miten voisi näemme, jos se ei ole 0,1, 2, 3, 4, 5, 6, 7, 8, tai 9. Yleisö: Jos alfa. 

ZAMYLA Chan: Joten jos alfa olisi vain meille, jos se kirje. Ja jos he antavat meille symboli, se on ole vielä aivan aio tarkistaa. Joten jos vedät up your ASCII pöytä, me tiedämme, että 0 kautta 9 ovat yksi segmentti. Kerro minulle numerot, että he vastaavat mikäli mahdollista. Yleisö: 40. 

ZAMYLA Chan: Eli alue on kuin 40-- Yleisö: Ehkä. 48-57. En ole varma. 

ZAMYLA Chan: 40-57? 

Yleisö: 48, luulen. ZAMYLA Chan: 48-57. Joten me tiedämme, että nämä ASCII symbols-- jos ASCII-arvo ei ole välillä 48 ja 57, se ei ole pätevä, eikö? Niin voisimme käyttää sitä eduksemme mahdollisesti? Miten aiomme päästä tämän kirjeen, ensimmäinen pois? Miten voimme päästä Tässä tämän merkin? 

Yleisö: s kiinnike i. 

ZAMYLA Chan: Mm-hm. Koska voimme ajatella jouset kuten taulukot, muistan. Joten mitä me haluamme sanoa? Haluamme sanoa, jos tämä is-- Annan sinulle vihjeen. Se on vähemmän kuin. Mitä luulet sen on oltava alle? Yleisö: 57? 

ZAMYLA Chan: 47, eikö? Mutta se merkitsee myös, että kun 0 yhden [? pinnoja?], koska se on merkki 0. Voisit myös laittaa 47. Ottaa ASCII taulukossa, koska näette, on vain jotain sinun pitäisi olla tietokilpailun arkki. 

Joten jos näin on, jos se on alle 0-- ei välttämättä. Se on vain joko olemaan pienempi kuin tai suurempi kuin 9. Joten voitte täyttää tämän viimeksi minulle? Niin tai s i on mitä, Rhea? 

Yleisö: yli 9. 

ZAMYLA Chan: Ei. Onko tuossa mitään järkeä kaikille, kuinka menimme sinne? Nämä ongelmat, he ovat kuin kun Katso ratkaisuja, se on kuin OH, OK. Ja tästä syystä käytäntö auttaa sinua. OK, joten palaamme 0. Lovely. Selvä. Muuten mitä haluamme tehdä? Tämä on mielenkiintoinen osa jos se on hieman enemmän kuten matematiikka vs. CS mielestäni. Onko kellään ajatusta miten voisimme tehdä tämän? Niin tärkeä asia ymmärrä, on ensimmäinen merkki viemme tulee olemaan huipputasolla numero, eikö? Joten jos me tarkastelemme muuntaa 123, ensimmäinen kerta kerrata tulee olemaan 1, mutta meidän joka on 100 loppuun mennessä, eikö? Niin yksi asia mitä voi tehdä on se, että jokaisen tulevan numeron otat, et moninkertaistaa arvon 10, niin että kun tulet loppuun, kaikki on ollut tarkistettu ylöspäin, eikö? 

Joten ensimmäisen kerran käynnistät se, sinulla on 1 niin oman arvon. Toisen kerran käynnistät sen, voit moninkertaistaa arvon 10. Se päivittää niin, että se on nyt 10, ja lisäät seuraavaan arvoon. Ja sitten kerrotaan, että 10 ja lisää seuraavaan arvoon. Ja tämä on, miksi he sanovat tämä on paljon enemmän kuin testaus matematiikka algoritmi vastaan CS, mutta minä eksyä. En kirjoita tietokilpailuja. 

Niin yksi asia, mitä voimme tehdä, on meillä sanoa arvoa kertaa yhtä suuri kuin 10. Joten tämä tulee siirtää teidän numeroinen kerran joka kerta. Ja sitten me vain haluamme lisätä. Haluamme lisätä missä Saimme juuri, eikö? Miten siis todella muuntaa meidän ASCII osaksi numero että se edustaa? 

Joten me tiedämme, että 0 on yhtä kuin 47, eikö? Joten jos 0 on 47, mitä olisi meidän täytyy tehdä se todella tehdä se int 0? 

Yleisö: Se on 48. ZAMYLA Chan: 48? Anteeksi. Haluamme vähentää 48, eikö? Muista ASCII matematiikka? Voimme käsitellä niitä vain kuten tavallisilla numeroilla. Jos kohtelet heitä kuin numeroita, ne tulevat numerot tehokkaasti. Joten jos meillä on s i, jonka oletetaan eli tässä tapauksessa on yhtä suuri kuin 0. Joten s i tässä tapauksessa olisi ASCII-- ASCII int sillä olisi 47. Jotta voisimme subtract-- tai 48. Voisit tehdä sen, on yksi tapa. Tietääkö kukaan paremmin miten voisimme tehdä 48? Me vain sanoi 0 is-- mennä ASCII voisit tehdä lainaus 0. Joten ei se sellainen tehdä mielessä, miten tämä toimii? 

Yleisö: Tässä vaiheessa on arvo 0 koska vaikka kerrot sen 10, olet aloittamassa nolla, joten se pitäisi kytkeä? 

ZAMYLA Chan: Joten tässä tapauksessa, sinua halua kertoa sitä ennen kuin lisäät, koska tässä tapauksessa, kyllä, se olisi vielä be-- minun osoitin puuttuu. Arvo on tässä tapauksessa ensimmäinen aika ajaa se on nolla. Joten olet vain lisäämällä siitä, että ensimmäinen numero. Tärkeää on seuraavan kerran voit kerrata, haluatko siirtää sen ennen kuin lisäät seuraavan numeron päälle. Tarkoittaako tämä selventää sinulle? OK. 

Joskus olet menossa saada outoja lisää Mathy asioita. Jos piti Tämän, olet vielä menossa jotta get-- aiot tehdä melko hyvin. Osittainen luotto on hyvin iso asia CS50 tietokilpailuja. Joten kirjoittaa mitä tiedät. Jos sait kaiken paitsi täällä, olet silti aio tehdä todella hyvin ongelma. Koska näytät, OK, minä melkein tietää. Tiedän, että minun täytyy kerrata läpi. Tiedän, mitä minun pitää tarkistaa. En vain ole aivan saada miten muuntaa se. Aiot olla OK. Kyllä, olet menossa menettää pari pistettä, mutta sinulla on edelleen menossa hyvä pistemäärä jotain kuin että jos olet puuttuu nämä kaksi riviä. Olisin kuin OK, tämä henkilö tietää, mitä he tekevät. Matematiikka on kova. Sanoisin siis, että olisit hieno. 

OK, joten te valmis Yritä strlen osoittimet nyt että te olette osoitin mestareita? Joten Otan sinuun kaverit töihin siitä, että vähän. Jos joku tarvitsee kertaus. Joten haluat käyttää osoitinta aritmeettinen, ja sitten jos s on nolla, toteutuksesi tulee palauttaa 0. Tämänkaltaisia ​​asioita, jotka saavat sinut todella onnellinen vain soittaa strlen lopussa päivän. Mielestäni tämä voisi olla hieman helpompaa kuin viimeinen, joka on hyvä. Annan te vielä hetken, ja sitten me työtä sen läpi. Ja sitten saamme mennä kytkimiä. 

OK, valmis kaverit? Ehkä hieman. Joten olen antanut sinulle kaksi vaihtoehtoa, eikö? Joko tarkista null ja palauttaa 0 jos se on, tai oikeastaan ​​laskea pituus. Kuka haluaa kirjoittaa tarkistaa null? Tsemppiä. 

Yleisö: Jos suluissa s on yhtä kuin yhtä kuin null return 0. ZAMYLA Chan: Lovely. Rakastan kun puoli ongelmaa on vain tarkistaa null. Tiedän teidän kanssa viime viikolla olin kuin check for null kirjaimellisesti joka kerta. OK, so-- 

Yleisö: Jos paluu 0 on vain yksi linja, me vielä kaarisulku? 

ZAMYLA Chan: Et ole teknisesti tarvitset niitä niin kauan olet johdonmukainen. Se on hyvä käytäntö vain saada tapana käyttää aaltosulkeita, mutta teknisesti ei. Sinun ei tarvitse niitä yksi rivi. Me vain yleensä suositella sitä ihmiset alkavat ohjelmaan. 

Mitä nyt ehkä haluamme tehdä täällä? Joten nyt me tiedämme, että meidän jono on voimassa. Haluamme pitää Laske pituus. Mikä on luultavasti ensimmäinen asia me haluamme tehdä? 

Yleisö: Luo int se pituus. ZAMYLA Chan: Aivan. Yleisö: Ja haluamme asettaa sen? ZAMYLA Chan: 0. Perfect. Selvä. Nyt mitä haluat tehdä? Tämä on oikeastaan ​​suurin osa sitä. Tsemppiä. 

Yleisö: Niin et todennäköisesti varten silmukka. Ja sitten sen jälkeen, kun soitat s olet saada osoitteen ensimmäinen asia, voisitte aloittaa i on yhtä suuri kuin 0. Ja sitten niin kauan kuin x plus en ole takaisin slash 0. ZAMYLA Chan: null terminaattori. Yleisö: null terminaattori. Sitten voit lisätä yksi pituus. 

ZAMYLA Chan: Joo. OK, niin antaa puolestaan, että osaksi hyvin konkreettinen säännöstö. Mutta se on täydellinen idea. Se on juuri sitä, mitä me teemme. Aiomme olla iteroimalla läpi osoittimella. Joten mitä me haluamme tehdä on sen sijaan int täällä, koska olemme ei viittaa siihen. Emme viittaa alkua merkkijono, joka alkaa olla jonkin verran osoite, oikeassa? 

Joten haluamme osoitin. Joten olemme menossa on joitakin char tähti, koska se vastaa meidän s, eikö? Joten tämä on jossain vaiheessa me alustetaan alkua merkkijono, OK? Joten soita sitä minä. Jos se on alku merkkijonon, mitä se aikoo luokitella? Ei 0. Haluamme sen olevan alkaa meidän merkkijono. Mikä edustaa alkua meidän merkkijono, joka meille on annettu? 

Yleisö: Vain s. 

ZAMYLA Chan: s. Joten tämä luo uusia osoitin, että edustaa alku meidän merkkijono, OK? Toinen tapa ajatella sitä on kuin täällä on meidän array. Se on meidän merkkijono, s. Joten sanokaamme tämä on ensimmäinen paikka, ja tämä on 0x4. 04. Tämä on meidän s, joka omistaa kyseisen osoitteen. Ja me juuri luonut toinen nimeltään Olen että vain viitataan sama asia. Niin he molemmat vain osoittaa alkua meidän merkkijono. Tämä on vain graafinen esitys. 

Joten nyt, mitä haluamme vain haluamme kerrata Meidän edellytys iteroidessaan kautta merkkijono. Nyt ostoksia. Sai tehdä ostoksia, kaverit. Me haluamme pitää päivittää ennen pääsemme null terminaattori, eikö? Niin mitä se mahtaa näyttää? Haluammeko minä, vai haluammeko tähti i on kysymys? On null terminaattori osoite tai jotain sijaitsevat osoitteeseen? Sijaitsee osoitteen, eikö? 

Tarvitsemme siis dereference mitä on täällä, koska tämä on vain joitakin osoite. Itse saada alkuun meidän dereference tähän niin että me itse saada Mitä tämä ensin. Joten jos teemme tähti i, mitä emme halua sen tasa-arvoisia? Yleisö: kenoviivan? 

ZAMYLA Chan: Ei. Onko järkeä kaikille? Meidän täytyy mennä meidän jono ja varmista, että se ei ole loppua. Ja sitten voimme vain päivittää näin. Normaali päivittämistä. Niin kauan kuin nämä ovat Met, mitä meidän pitää tehdä? 

Yleisö: pituus plus plus. 

ZAMYLA Chan: Mm-hm. Ja sitten kun for-silmukan päättyy, mitä me haluamme palata? Yleisö: Pituus? ALLISON BUCHHOLTZ-AU: pituus. Siellä mennään. Ilmeisesti liha tämä on ymmärtää tätä varten silmukka. Onko kaikki saavat miten se toimi? Olen iloinen mennä yli sen uudestaan. 

Yleisö: toinen osa, joten tähti minä siellä, se osoite first-- ZAMYLA Chan: Se ei ole osoitetta. Se, mitä on. Yleisö: Se on todella olemassa. ZAMYLA Chan: Se mitä todella siellä. Joten tämä on saying-- anna minua tekemään tätä paremmin. Joten tämä on 0x04, ja olen juuri menossa sanoa Aion tehdä tästä minun nimeni. OK. Kyllä, tiedän, että olen tietokilpailu tarkastelun tänä iltana. Paljon tietokilpailu tarkastelun. Joten sanokaamme tämä merkkijono on minun nimeni, Allison. Vähän sotkuinen, mutta se on olemassa. Ja s edustaa sijainti missä merkkijono alkaa, joten aion tehdä tästä real-- tämä on osoite, jos merkkijono alkaa, eikö? 

Joten mitä me teemme tässä haluamme Käytä osoittimet kerrata läpi. Joten luomme joitakin osoitin, minä, joka myös on yhtä suuri kuin sen alkua merkkijono. Ja kussakin vaiheessa, haluamme jatkuu läpi array tässä, kunnes osui null terminaattori. Joten haluamme aina tarkistaa, mitä on kussakin näistä osoitteista. 

Joten me dereference i, niin että Ensimmäistä kertaa teemme sen me sanovat, OK, mitä osoitteessa 0x04? Se. OK, olemme hyviä. Increment pituus. Siirtyä seuraavaan. Joten i-- muistaa osoittimet kasvaa koko mitä he osoittavat. Joten tässä tapauksessa, koska se on nieriä, se tulee päivittää yhdellä. Joten nyt olemme menossa katsomaan 5, mikä tarkoittaa, että se tulee tänne. Niin se sanoo OK, siirry 0x05. Mitä siellä on? Se on l. Ja se tulee pitää tehdä, että kunnes se osuu tämä. Ja se sanoo OK, mitä on mikä osoite tämä on? Null terminaattori, OK. Exit. Ja vain palata pituus. Koska tarvitset mitä todellisuudessa on että osoitetta, ei osoitetta itse. 

On hyvin harvoja paikkoja, joissa todella tarvitset osoite. Suurimman osan ajasta, jolloin käytät ja se on kun olet ensin määrittämällä osoittimen tai kun olet se virtaamaan toisen toiminnon. OK, kaikki hyvä siellä? Sellainen? OK. 

Joten se näyttää kuin olisimme sai noin 12 minuuttia jäljellä, niin me mennä ehkä viimeinen ongelma, ja sitten siellä mitään käsitteitä, jotka ovat tulleet ylös Sillä välin voimme nopeasti mennä yli siitä. 

Joten vaihtamalla vaihteita on viimeksi Ongelmana tässä, kytkin lausuntoja. Joten sinun tehtäväsi on kirjoittaa tämä niin, että se käyttäytyy samalla mutta ei käytä kytkimiä. Kalkkipitoisessa käsissä. Joten kysyttävää tästä pois lepakko? Ei mitään? OK. Onko jokainen ymmärtää, että jos asiassa ei ole mitään sen jälkeen, se tarkoittaa, että se olisi seuraavaa vaihetta? Joten tapaus 1 ja 2 tässä tapauksessa tehdä täsmälleen sama asia. Joskus pisteen sekaannusta. 

Selvä. Kellään mitään ideoita? Joo? 

Yleisö: Voit siis vain tehdä jos lausuntoja. 

ZAMYLA Chan: Mm-hm. Joten mitä meidän ensimmäinen? 

Yleisö: Jos n on yhtä suuri kuin 1, ja 2 linjat tai n on = 2, sitten tulostaa pieni. Ja sitten voit tehdä muuta, jos? Tai voit vain tehdä jos? 

ZAMYLA Chan: Voit tehdä muuta, jos? 

Yleisö: Olisiko väliä, jos teet jos? ZAMYLA Chan: Niin se tekee. Onko anyone-- niin, et saavat saman tuotoksen Jos käytät vain jossittelua vastaan jos käytät muuta jossittelua. Voisitteko ajatella syy miksi saatat haluta käyttää muuta jos vs. paljon jossittelua? On tehokkuuteen. Joo? 

Yleisö: Se tarkistaa kaikki IFS joka kerta. 

ZAMYLA Chan: Eli vaikka se osui tämä ensimmäinen, se menisi tarkistaa joka toinen. Joten haluat käyttää, jos muuta jossittelua tapauksissa jossa vain yksi heistä koskaan soveltaa. Joten poissulkeminen on mitä meillä on tapana sanoa. Jos sinulla on nippu jossittelua, se tarkoittaa, että ehkä enemmän kuin yksi heistä asioista, ja ehkä enemmän kuin yksi niistä voi olla totta. Ja haluat molemmat toteuttaa, jos ne ovat totta. Jos haluat vain yksi niistä toimii Näissä toisensa poissulkevia tapauksia, haluat käyttää muuta, jos, koska se kaikki on tekemistä tehokkuutta. Koodi on vain parempi suunniteltu jos se noudattaa tätä käytäntöä. Joten tässä tapauksessa meillä on muuta, jos. Ja tämä olisi? 

Yleisö: n on yhtä suuri kuin 3. ZAMYLA Chan: Perfect. Painomedian. Ja sitten meidän viimeinen tapauksessa, mitä meillä on? Muu tai muuten jos? Yleisö: Else. 

ZAMYLA Chan: Do me want-- Haluat if koska meillä on konkreettisia tapauksia. Se ei ole sellainen saalis kaikki. Jos sinulla on ollut oletuksena switch-- Muistan vaihteissa voi olla kyse, ja sitten on oletus. Jos sinulla on ollut oletus, että on eräänlainen teidän muu selvitys siellä. Mutta jos se on vain tapauksissa, se tarkoittaa, että tarvitset tarkistaa, jos se on jokaisen näistä. Joten tässä tapauksessa olisi 4 tai 5. Haluamme tulostaa. Se on suuri. Ja siellä mennään. Ja että olisi teidän ohjelma. 

Joten tässä tapauksessa, jos me oli oletuksena jotain, meillä olisi muuta mitä se halusi meidän tekevän. Niin, että on hyvä ero tietää, ymmärtää. Tarkoittaako tämä auttaa kytkimet sinulle? Perfect. Selvä. 

Meillä on noin kahdeksan minuuttia jäljellä. Onko teillä mitään muut korkean tason käsitteitä? Kysymyksiä yleensä? Kyllä? 

Yleisö: Minulla oli kysymys yksi heistä että oli satunnainen numero generaattori tietokilpailu nolla. ZAMYLA Chan: Voi, että yksi. Että toinen on toinen, jos se on enemmän matematiikkaa than-- kyllä. Ratkaisu that-- jopa minä, kun Näen sen, olen kuin mitä tämä on. 

Yleisö: Se oli numero 7. 

ZAMYLA Chan: On outoa mielestäni. Joten periaatteessa haluat käyttää drand48, joka antaa sinulle numero välillä 0 ja 1. Ja haluat käyttää sitä niin että olet jotenkin saada a-- ja se on paljon enemmän laskutehtävä minulle kuin luulen CS ongelma. 

Niin, että voit tehdä it-- ja Joskus se vain on tuollainen. Jälleen, nämä ovat tapauksissa, joissa se on eräänlainen samankaltaisten kirjoittaa mitä voi ja osittainen luottoa. Joten jos haluamme palata, me tiedämme, että olemme aio käyttää drand48 jotenkin, eikö? Joten miksi emme vain hiukkaakaan että alas. Käytämme sitä jotenkin. Siten, että ne ovat te käytätte sitä on kuten tämä, jota yritän selittää. 

Joten periaatteessa mitä täällä tapahtuu on, koska se on välillä 0 ja 1, mitä teet on olet kertomalla by-- tämä on hyvin paljon matematiikkaa kysymys. Vain täysi vastuuvapauslauseke, tämä on täysin matematiikka kysymys. Mitä olet tekemässä on koska 0 ja 1, ja te haluavat sen olevan sisällä Tällä alueella, todella selvittää, miten suuri alue on, ja sitten et periaatteessa mittakaavassa se ylös, joka on mitä tämä tekee. 

b miinus antaa teille, että alue, ero näiden numeroiden. Voit moninkertaistaa välillä 0 ja 1, ja sitten lisätään vain tarkoittaa, että skaalaus se ylös niin, että se on välillä a ja b, jota en todellakaan pidä tätä ongelmaa. Kuten sanoin, tämä tietokilpailu on tarkoitettu käsittämään ihmisiä, jotka ovat vähemmän mukavaksi, jossain välissä, ja muuta mukavaa. Joten jos he tekivät sen niin että se oli jotain että jokaiselle alle mukava paikka olisi saada, meillä olisi aivan liian monta ihmiset pisteytys viimeistelee, ja mukavampaa olisi tylsää. 

Joten ne ovat aina nämä sellainen visainen kysymyksiä jotka on tarkoitus olla hieman vaikeampaa että kestää jonkin luovaa ajattelua. Kun näet niitä, älä mene liian ihmeissään. Haluan ehdottomasti sanoa läppä kautta tietokilpailun ensimmäinen. Ongelmien ratkaisemiseksi että tiedät voi, koska ei ole mitään käyttöä juutu on ongelma, kun on kolme tai neljä tai viisi sivulla Tämän jälkeen voit helposti tehdä. 

Yleisö: Miksi juuri sinä moninkertaistaa sen alueella? 

ZAMYLA Chan: kerrot välillä että te know-- se on kuin kuinka paljon jälkeen sinä haluat? Joten voit ajatella, koska se palauttaa numero välillä 0 ja 1, Voit ajatella sitä prosentteina. Niin se on pohjimmiltaan sanomalla, jos meillä Meidän numero linja täällä, on täällä, ja b on täällä. Olet kuin kuinka paljon ohi se on? Onko kaikki teemme. Joten olet vain pyytää osuus tämän alueen, joka on mitä se sinulle antaa. Ja sitten et periaatteessa vain mittakaavassa sitä lisäämällä. Se matematiikka visainen. 

Jos oli viime hetken neuvoja, minä sanoisi selata kysymyksiä, selvittää, mitkä olet tietää, että kuten, oh sain tämän. Lähes varmasti he aikovat olla kysymyksiä, joita et tiedä tai että olet menossa on aikaa varten, joten osuivat vahvuudet, OK? Te olette menossa suuri. On olemassa paljon kysymyksiä syystä niin että sinulla on aikaa Tällainen on mahdollisuus osoittaa, mitä olet todella hyvä. Niin se on OK, jos olet ei hyvä kaikessa. Pelata teidän vahvuudet. Kyllä? 

Yleisö: Onko tämä siis menossa palauttaa jotain, joka on katkaistu? Kyllä, se tulee, sillä drand Palautukset välillä 0 ja 1. Se tulee palauttaa int, koska se tulee katkaista kun lisäämme tai moninkertaistaa sen. Cool. Viime hetken kysymyksiä? 

Te aiotte tehdä suuria. Te tulette olemaan upea. Ja vaikka ei, siellä olla karkkia täällä ensi viikolla. Ja minä rakastan sinua. Minä rakastan teitä riippumatta. Okei, kaikki, onnea. On hauskaa. Aiot olla kunnossa. Ja tiedätkö mitä? Kahdessa päivässä se menee olevan ohi, kun taas minä on kaksi midterms torstaina, joten ainakin te tehdään. Okei, minä Nähdään ensi viikolla.