>> [Zenelejátszási]
CAMILLE REKHSON: Üdv mindenkinek.
Üdvözöljük a CS50 kvíz nulla felülvizsgálati ülésén.
Én vagyok Camille.
És én lesz majd mint néhány témát veled
srácok ma, hogy segítsen felkészülni a teszt.
Tehát itt a teljesség igénye nélkül fenti témákhoz,
ismernie kell a kvíz.
Ezeket közvetlenül A tananyag.
Tudom, hogy soknak tűnik.
De hidd el, amit megtanultam, az összes ezek a dolgok az elmúlt néhány hétben.
>> Tehát akkor biztosan megy felett sok ezek ma.
Hanem némi időt vesz igénybe a Saját hogy vizsgálják felül ezeket a dolgokat.
És ha nem ismeri amit néhány ezek a dolgok,
Mindenképpen kérjen egy közülünk.
Továbbá, a hivatalos szó A kvíz, megy ez a link.
Ez lesz az összes információt amellyel szobában el kell menni a,
feloszlott betűrendben, és még néhány tippet, hogy mit anyagok
akkor meg kell tanul, és milyen A kvíz kérdések számíthat.
Úgyhogy győződjön meg róla, hogy ellenőrizze, hogy ki.
>> Továbbá, néhány tipp, ha készül a vizsgára.
Gyakorold kódolási papíron.
Tudom, hogy már megszoktuk, hogy miután Az IDE csekket a hibákat az Ön számára,
és it's-- ha írsz fel, ez egy kicsit más, mint hogy
hogy írjon a dolgokat.
Szóval gyakorolni csinál valami kódolás.
Néhány jó funkciók gyakorlására Ennek a strlen és atoi,
látta, ha meg tudná írni ezeket ki a saját.
Ismernie kell a problémát készletek.
A legtöbb években vannak kérdéseket, amelyek
hogy néhány, a probléma meghatározott anyag.
Úgyhogy győződjön meg róla, hogy érti hogyan kell csinálni minden problémát készletek.
>> Próbáld néhány régi vetélkedők alatt 75 perces időkorlát.
Sok a vetélkedők lehet ilyen sokáig.
Szóval ez egy jó módja annak, hogy magadnak némi gyakorlat,
és hogy mennyi ideig fog elviszi, és hogyan
kell osztani az idejét, hogy győződjön meg arról, befejezni mindent végére.
És azt is, kapsz egy oldalt, kétoldalas referencia lap
hogy lehet írni bármit is szeretnénk a használni a kvízt.
Tehát, ha te létre hogy ez is
Tényleg nagyszerű módja tanulni, mert akkor milyen lehet felülvizsgálja a dolgokat
ahogy írsz rá.
>> Tehát minden általános kérdései A kvíz, vagy hogyan működik?
Igen.
>> Közönség: Will, hogy témák listáját hogy csak azt mutatta, hogy elérhető számunkra
online?
>> CAMILLE REKHSON: Ez a teljes lemezt műsor felkerül a honlapra.
Továbbá, a videó a mai felülvizsgálata ülésen lesz a honlapon.
Szóval ne aggódj túl sokat írásban dolgokat egész.
Ez lesz az összes ott lesz.
Más kérdés?
OK, így kezdjük.
>> Tehát egy dolog, hogy tisztában legyünk a A különböző adattípusok és a méret
hogy vállalni.
Ez is lehet egy jó dolog, hogy írja le a referencia lemez,
Csak győződjön meg róla, emlékszem az összes ilyen.
De-- így karakter a 1 byte.
Ints 4 bájt.
Hosszú, hosszú, ami alapvetően több hely egész, 8 bájt.
Az úszó 4 byte.
A kettős, amely alapvetően megadja Több hely tárolni úszó, 8 bájt.
És akkor egy mutatót is 8 bájt.
Bármilyen kérdése van ezeknek?
>> Tehát bináris egy másik téma voltunk borított egy kicsit ebben a félévben.
Tehát lássuk néhány gyakorolni a konvertáló
közötti bináris és decimális.
Szóval valakinek valami ötlete, mi hogy első lenne?
Bárki?
Igen, ez 42.
Tehát, ha emlékszel, az egyes A helyek bináris
alapvetően, mint 2 arra a helyre erejét.
>> Annak érdekében, hogy az első helyen van 2 a 0 hatalom.
És mi van a 0-hoz, így semmi.
A következő hely 2 az első hatalom.
És mi van egy 1 van, úgy, hogy alapvetően egy 2.
A következő hely 2 a második, amely 4.
Nincs ott semmi.
A következő hely fölött van 2 a harmadik, ami 8.
És mi van ott.
És folyamatosan megy.
Hogy last-- a legtávolabbi a elhagyta az egyik, ahol már 32.
És igen, már lényegében 32 plusz 8 plusz 2-t 42.
Bármi kérdés?
>> Közönség: Mi az index számára?
>> CAMILLE REKHSON: Az index Alapvetően azt mondja, ez a bináris.
Szóval van egy 2 van.
Ha lenne az általam elvártnál a következő Egy, vagy ha mi konvertáló decimális
kettes, van egy 10 megmutatja nekünk, hogy ez a szám eredetileg tizedes.
>> Közönség: Köszönöm.
>> CAMILLE REKHSON: Igen.
Más kérdés, hogy az egyik?
OK, így próbáljuk a következő az egyik, majd a decimális bináris.
Tehát figyelembe 50 és azzal, hogy a bináris.
Hogyan tennéd ezt?
Igen.
>> Közönség: 110010.
>> CAMILLE REKHSON: Igen.
Tehát one-- egyszerűen gondolkodni konvertáló a decimális bináris
az alábbiakra: gyakran segít, hogy írjon ki mi a különböző 2-hatványok.
És akkor megy át rajta, és látni függetlenül a legmagasabb egyike azoknak
az, hogy akkor tedd a decimális szám nélkül megy rajta.
>> Tehát ebben az esetben, az egyik hatáskörének 2 32.
Tehát 32 bemegy 50.
De a következő bekapcsoláskor lenne 64, ami nyilvánvalóan nem fér bele 50.
Így a legmagasabb már a 32.
A következő egy lefelé 16.
32 és 16 csak 48.
Szóval ez is elfér 50.
Tehát van 1-es, mind az ilyen.
És akkor, ha folyamatosan megy le, az egyetlen dolog, amire szükségünk maradt
2 többet kap 48-50.
Tehát akkor van egy 1 ebben a helyzetben, és a 0 az utolsó pozícióba.
Mert nincs semmi A 2 a 0-ik helyen.
Kérdések a konvertáló decimális bináris?
>> Tehát most próbáljuk csinál Néhány bináris kívül.
Hogyan, ha hozzá e két helyzet?
Igen.
>> Közönség: 11100.
>> CAMILLE REKHSON: Igen.
Ezáltal kívül bináris elég nagyjából ugyanaz, mint csinálja a tizedes.
Kivéve, ha van két 1 lénye összeadjuk, 1 plusz 1 jelentése 2,
de 2 bináris 1 0.
Szóval van, hogy elbírja a 1, és tartsa könyv azt a pár oszlopok.
És azon kívül, hogy csak add rendesen.
Bármilyen kérdésre, hogy?
Igen.
>> Közönség: Bocs, hogy mi lenne az utolsó hely?
Van hat számot.
Tehát a bal szélső oszlopban, milyen értéket is ez?
CAMILLE REKHSON: Ezen az alsót?
Közönség: A felső egy, a 50.
CAMILLE REKHSON: 50?
Ó, így a bal szélső egy 32.
>> Közönség: 32?
>> CAMILLE REKHSON: Igen, így lenne lehet 32, 16, majd 8, 4, 2, 0-- vagy 1.
Nos, ez 2 a nulladik, amely 1.
Igen.
Más kérdés ezzel kapcsolatban?
OK, így aztán megyünk csinálni egy kicsit a hexadecimális.
Tehát ez lehet egy kicsit kevésbé ismert,
mert tudom, hogy amit csináltunk sokkal több bináris.
De egy igazán jó módja annak, hogy gondolni hexadecimális
az, hogy szakítani egy bináris számot 4 bites darabokban.
Mivel minden egyes 4 bit egy bináris szám alapvetően
egyik hexadecimális számok.
>> Tehát ha megvan ez első, mi alapvetően nyolc 1-es.
Így azok is osztott up--
>> Közönség: 255.
>> CAMILLE REKHSON: Mondd ezt még egyszer.
Közönség: 255 decimális, vagy 0xFF hexadecimális.
CAMILLE REKHSON: Igen, ez az.
Tehát, ha megosztjuk a fel két 4 bites darabokat,
már lényegében négy szett 1.
Melyik a maximum-- alapvetően a maximális
kaphatunk a 4-bites bináris.
És a maximális tudtunk kapni hogy hexadecimális lenne F.
Szóval mi lett volna két F-nek.
Bármilyen kérdésre, hogy?
Igen?
>> Közönség: Tud ismételje meg ezt.
CAMILLE REKHSON: Persze.
Így minden, alapvetően, hely hexadecimális van
ekvivalens a 4-bit egy bináris.
Tehát a legegyszerűbb módja ennek az, törni fel, 4 bites darabokban.
Tehát ebben az esetben, már nyolc 1-es.
Tehát, ha szét azokat két 4 bites darabokat,
mi lett volna két négy 1-es.
És minden egyes ilyen egyenértékű az F.
Ha úgy gondolja, about-- Tudom agyunk
fajta vezetékes gondolkodni Több keresztül tizedes,
mert ez az, amit mi szokva.
Tehát az egyik módja, hogy gondolok rá, mint A négy 1-es egyenlő 15 decimális.
És 15 hexadecimális F. Szóval ez Egy másik mód, akkor gondolja át rajta.
Igen.
>> Közönség: Mi a 0x?
>> CAMILLE REKHSON: A 0x azt jelzi, hogy ez a hexadecimális.
Szóval csak fel, hogy prefix van, normálisan.
Más kérdés, hogy az.
OK, úgyhogy próbáljuk megy a másik irányba akkor.
Ebben az esetben azt have-- sajnálom?
Közönség: [hallható].
CAMILLE REKHSON: Megyünk bináris.
Szóval, megy a másik irányba.
De ebben az esetben, van 5 és A. Tehát ha belegondolunk, ez az,
ha minden egyes those-- az 5, és a A jelentése Mindkét fogja képviselni egy 4 bites darab,
Hogyan mondod 5 bináris?
>> Közönség: 0101.
>> CAMILLE REKHSON: Igen, Szóval ez a 0101 része.
És akkor hogyan mondanál A in--
>> Közönség: 10.
CAMILLE REKHSON: Mondjuk it-- sajnálom?
Közönség: 10.
CAMILLE REKHSON: Igen, ez a második része.
És akkor, ha tesz E két együttes, ez
hogyan kap a teljes bináris hexadecimális.
Igen?
>> Közönség: Tudni, hogy A 1010, mit kell megjegyeznünk?
Vagy tudsz általam elvártnál
>> CAMILLE REKHSON: Tehát, ha you-- a differe-- így
ha mész keresztül bináris, alapvetően bináris
van 0 és 9 között, majd egy az F, mint a 16 dolog.
Tehát ha egészen 0 9-- ha you-- 9, majd egy, alapvetően
ha át azt decimálisra A lenne, mint 10, a B lenne, mint 11.
És ha úgy gondolja, a bináris 1010 8 és 2,
mert ez a két Helyek, hogy összeadja 10, amely
Pontosan egy egyenértékű.
Szóval ez a fajta egyszerű módja annak, hogy gondolni.
Más kérdésre hexadecimális.
>> OK, így most fogunk venni Egy pillantás bitműveletek.
Tehát ezek is határozottan jön a kvíz.
Tudom, mi nem Dolgoztam velük sokat.
De mi csak csinálni egy kicsit felülvizsgálatot az.
Így remélhetőleg ezek lesznek a kicsit ismerős neked.
Így a hat bitműveletek hogy már itt vannak felsorolva.
És hadd manipulálni egyes biteket.
Tehát az ÉS operátor egyetlen jelet.
Ne tévesszük össze, hogy a A dupla-jel,
amely a logikai ÉS, hogy lehetővé teszi számunkra, hasonlítsa össze a két dolgot.
>> Az egy- és hogy miként lehet manipulálni a dolgokat bitenkénti.
Szóval ez ad nekünk az eredménye 1, ha mindkét Az érvek, hogy mi összehasonlítjuk
a same-- vagy 1.
És a függőleges sáv, VAGY, ad US 1, ha legalább egyikük jelentése 1.
Tehát alapvetően pontosan amit a szavak utalnak.
És ha a két bit 1, 1 és 1 ad nekünk 1.
De az OR, ha ez 0 vagy 1, vagy 1 vagy 1, mindkét esetben,
van 1, mint hogy az egyik közülük.
Szóval akkor kapnánk 1.
Közönség: Mit értesz hogy azt mondja, ez ad 1?
>> CAMILLE REKHSON: A eredmény. Fajta, mint te
would-- ha nem 0 és 1, a eredményeként lenne 1-- vagy 0
és 1 az eredménye ez lenne 0, sajnálom.
Igen, ez a fajta a eredményeként az expressziós.
És akkor ez a kalap szimbólum az XOR, vagy kizárólagos VAGY.
Tehát ez azt jelenti, kizárólag egy vagy pontosan az egyik két érv egyenlő 1.
És akkor adna 1.
>> A kis kacskaringós vonalat a NEM műveleti.
Tehát ellentétben a többiekkel, amely működnek egy pár bit,
A NOT operátor csak úgy Egy kicsit, és fordítsa.
Tehát, ha give-- ha nem Nem 0, akkor kapsz 1.
És ha nem teszed meg 1, ez adna 0.
Igen?
>> Közönség: Mi a különbség között, vagy egy vonal
és a VAGY két?
CAMILLE REKHSON: Tehát a OR két vonal a logikai VAGY.
Szóval ez összehasonlításához két teljes egészek, vagy two--
hogy ha a dolgok egyenlők.
Vagy mint ezt megegyezik ezzel, VAGY ez megegyezik az ilyen típusú dolog.
Mivel az egységes bárban vagy, a dolgokat csinál bitwise.
Igen.
>> Közönség: Mit értesz az alatt, bitenkénti?
>> CAMILLE REKHSON: Szóval bitenkénti dolgozik közvetlenül a bit bináris.
>> Közönség: Ó, értem.
>> CAMILLE REKHSON: Igen, dolgozó 0 és 1-es.
Megteszünk mindent, egy-két példa erre után, csak azért, hogy ne legyen túl zavaros.
És akkor az utolsó kettő a bal shift és a jobb oldali Shift.
Amelyek alapvetően két kisebb, mint jelek vagy két nagyobb, mint jelek.
És tolódott kicsit az adott helyek száma
hogy adja meg az irányt.
Így lenne akár műszak balra, vagy jobbra.
Igen?
Közönség: Mi a szintaxis fut?
>> CAMILLE REKHSON: Megyünk megy keresztül egy példát a második.
Így remélhetőleg, hogy segíteni fog.
Bármilyen kérdésre csak mi van itt, before-- OK.
Így megy keresztül néhány példát.
Kezdjük az ÉS is.
Mit tennénk, hogy ha meg is 0 és 1?
>> Közönség: 0.
CAMILLE REKHSON: OK, és ha mégis 1 és 1?
Közönség: 1.
CAMILLE REKHSON: Igen, mi lenne, ha nem 0 vagy egy?
Közönség: 1.
CAMILLE REKHSON: Hogyan kb 1 vagy 1?
Közönség: 1.
CAMILLE REKHSON: OK, mit szólnál 0 XOR 1?
Közönség: 1.
CAMILLE REKHSON: És 1 XOR 1?
Közönség: 0.
CAMILLE REKHSON: Ti vagytok jók.
Mit szólnál NEM 0?
>> Közönség: 1.
CAMILLE REKHSON: nem 1-gyel?
Közönség: 0.
CAMILLE REKHSON: OK gombra, majd az utolsó az ember egy kicsit az egyik a váltás.
Tehát, ha kezdetben x 8, és akkor y x balra mozdult 3,
mi lenne, hogy adjon nekünk?
>> Közönség: [hallható].
CAMILLE REKHSON: Mondd ezt még egyszer.
Közönség: [hallható].
CAMILLE REKHSON: Szóval, ez a valóban ad nekünk 64.
Közönség: [hallható].
CAMILLE REKHSON: Szóval én csak fog írni ezt itt,
így ez teszi egy kicsit értelme.
Ha van 2 a 0, 2 az 1, 2 a 2, 2-3 lesz 8.
És ha azt akarjuk, hogy műszak 3 több bitet balra, az lenne 2 a 4,
2 az 5, és 2. a 6, és 2. a 6 64.
Van ennek értelme?
Igen.
>> Közönség: Ez azt váltás minden az 1- és 0 a bináris számot the--
>> CAMILLE REKHSON: Igen.
És akkor nem kell aggódni a kvíz ezekről lehet negatív.
Mi nem leszel foglalkozik negatív eltolódásokat semmilyen módon.
Bármilyen további kérdése van ennek?
Igen.
>> Közönség: Ha ez áttevődik a jogot, mindaz, ami wasn't-- bármi,
eredetileg nem szerepelt a dolog 0?
>> CAMILLE REKHSON: Igen, akkor csak adj 0-on az eredeti.
Igen.
>> Közönség: Tehát mi, hogy 100 jobbra tolódott háromszor?
CAMILLE REKHSON: 100 jobbra tolódott,
így telne az összes 1-es és 0 és csak megváltoztatni azokat
jobbra, ahányszor Ön azt jobbra tolódtak.
>> Közönség: [hallható]?
CAMILLE REKHSON: Nos, 100-- is beszélsz 100 bináris,
vagy 100 decimális?
Közönség: Sajnálom, 100 bináris.
>> CAMILLE REKHSON: 100 bináris, ha eltolja azt a right--
ha jobbra tolódtak egyszer, akkor válna 10.
Ha eltolja azt a jogot, kétszer, válna 001.
És akkor, ha váltani újra, Ön milyen elveszíteni a kicsit.
Igen, ez csak 0.
Más kérdés ezzel kapcsolatban?
Igen.
>> Közönség: Tehát akkor lesz 000.
>> CAMILLE REKHSON: Igen.
OK, szóval menjünk át kis ASCII matek.
Tehát karakter alapvetően kell kezelni, mint egészek
alapján ASCII értékeket.
Tehát, ha ültünk int Egy egyenlő 65, INT B felér egy plusz 1, int char C egyenlő
D mínusz 1, és char D értéke 68, mi lenne kinyomtatni az alján?
>> Szóval, mi nyomtatás these-- áldja you-- vagyunk
nyomtatás ezeket mind ki, mint CHARS alapuló százalékos C.
Szóval alapvetően kinyomtatásával a karakter értékét mind a négy
ezeket a változókat.
Mint egy csipetnyi, 65 az ASCII értéke A tőke A. Talán ez segített.
Mi?
>> Közönség: ABCD.
>> CAMILLE REKHSON: Igen, ez nyomtassa ki pontosan,
ABCD, mert mi meg int a egyenlő az ASCII értéke A.
Tehát, ha nyomtatni, hogy ki, mint egy karakter, csak hogy a tőke egy,
A plusz 1 lenne nagybetűvel ASCII.
D mínusz 1 lenne fővárosban C ASCII.
És 68 ASCII értéke D. kérdések ASCII?
Igen.
>> Közönség: Szóval, a idézőjelbe Egy, nem, hogy a változás nagy része az ASCII?
>> CAMILLE REKHSON: Ez uses-- meg count-- egyetlen idézőjelbe A
teszi, hogy egy karaktert.
És ha van dolgunk, ez a szám form--
így amikor, mint ebben az esetben, ez kezelik, mint egy int--
akkor lenne foglalkozni vele ASCII értéket.
Igen.
>> Közönség: Ajánlom, hogy van egy ASCII hivatkozás asztalra?
>> CAMILLE REKHSON: Nem think--
>> Közönség: Vagy ez csak foglalkozik ezekkel?
>> CAMILLE REKHSON: Azt hiszem, megtenném könnyű dolog.
Én nem hiszem, hogy lenne fáj, hogy írja le lehet
mi tőke A és kisbetűs A vannak, csak mik azok a tartományok kezdve.
De nem hiszem, hogy meg kell, hogy tegyen meg minden a tér, hogy egy egész ASCII tábla.
Igen.
>> Közönség: Mi a különbség közötti mondván int az A és C char,
mint te a csúcson?
>> CAMILLE REKHSON: Tehát csak hogyan, ami a memóriában tárolt.
De tudod kezelni azt mindkét irányban.
Mint látjuk itt, mi print ki az A, mint egy karaktert.
Közönség: Szóval ez ugyanaz, mint egy?
CAMILLE REKHSON: Igen.
Más kérdés?
>> Közönség: Szóval, százalékban C mond nyomtatásához char?
>> CAMILLE REKHSON: Igen.
>> Közönség: Tehát akkor is, ha A-nak csak definiálták, mint egy egész szám,
ha megpróbáljuk kinyomtatni a char mint 65, akkor would--
CAMILLE REKHSON: Úgy megy Alapvetően megy ASCII chart
és kapja amit karakterek ASCII chart, hogy 65.
>> Közönség: Köszönöm.
>> CAMILLE REKHSON: Igen.
Igen?
>> Közönség: Tehát, ha te% I,% I, % I,% I, igaz csak print--
CAMILLE REKHSON: Igen, ha nem mind a 4% I-é,
lenne kinyomtatni az ASCII értékek mind a négy említett.
Más kérdés?
OK, így kör, alapvetően ez a segít meghatározni, ahol
a változó létezik a programban.
Szóval beszéltünk két különböző típusú körét, globális és lokális.
>> Ha egy változó globális hatókörű, ez azt jelenti, a teljes program
fér hozzá, hogy a változó.
És ha globálisan hatálya változó, akkor
Kijelentem, hogy mielőtt a fő funkciója.
Így kell ezt csinálni rögtön a denevér.
És akkor az egész programot tud hozzáférni.
>> Ha csak lokálisan hatókörű, hogy változó korlátozódik egy adott régióban.
Tehát, ha kijelentem belül a hurok, csak az, hogy a hurok tud hozzáférni.
Vagy ha kijelentem belül egy meghatározott feladat,
Csak ezzel a feladattal is hozzáférhetők.
Kérdések a hatálya.
>> OK, így a funkció prototípus.
Alapvetően azért, mert a C, ha lefordítja, olvassa felülről lefelé.
Ha hogy függvényeket végén a kódban,
A fordító nem tudja, hogy ez a funkció létezik.
Tehát mi általunk használt prototípusok, amely alapvetően mondja a fordító,
van ilyen funkció, menj nézd mert később a kódot.
Tehát az utat, amit csinál Egy függvény prototípus
Pontosan hogyan kezdje off írásban függvényében.
Ön adja meg a visszatérési típusa, A függvény neve,
majd olyan érveket hogy ez a függvény.
>> Szóval, hogy nézd meg egy gyors példát, ebben a esetre, ha a funkciót, hogy mi használ itt
Ez alapvetően egy kocka funkciót.
Tehát vesz egy egész és vissza a kocka, hogy egész.
Szóval azért, mert írtam, hogy funkció alatt a fő funkciója,
és szeretnénk használni a kimenete hogy-- vagy mi
szeretnénk, hogy a funkció a mi fő funkciója,
tesszük a prototípus módja a tetején a programunk.
És akkor, ha hívjuk ez a mi fő funkciója,
A fordító tudja, hogy ez a funkció később írt, és megy keresni azt,
és fel fogja használni rendesen.
Kérdések a prototípus?
Igen.
>> Közönség: Tehát mi a lényeg?
Nem értem a lényeg a prototípus.
Miért nem volna ez ott?
>> CAMILLE REKHSON: Nos, ha ez itt lent, majd amikor
kapsz sorban kocka x a fő funkciója,
a fordító fogalma sincs, hogy A kocka funkció valóban létezik.
>> Közönség: Nem tudnád Csak tedd elé?
>> CAMILLE REKHSON: Ez Jobb kódolási gyakorlat
hogy tedd alá a fő funkciója.
Szóval ezért mi lenne nem a prototípus.
Csak azért, mert, ha Volt egy csomó funkció,
akkor lenne igazán rendetlen olvassa el mindazokat a funkciókat,
mire a húst a program.
Ja, és volt egy q--
>> Közönség: Szóval, van nyilvánításáról A változó fel a tetején
így érheti meg, ez egy globális változó?
Az, hogy ehhez hasonló ahol ez nyilvánította
ott, úgy, hogy tudja, hogy ez lesz később visszatérhetsz
és tudod használni?
>> CAMILLE REKHSON: Igen.
Igen.
>> Közönség: Amennyiben the-- további funkciók létrehozott kulcsot kívül
ez a dolog, or--
>> CAMILLE REKHSON: Igen, ha teremt más functions-- fő
Maga a function-- így ha te létre egyéb funkciókat,
kell őket kívülről.
Igen?
>> Közönség: Mi százalékkal D?
CAMILLE REKHSON: Százalékos D ugyanaz, mint a százalékos I.
Arra utal, hogy egy egész szám.
Igen.
>> Közönség: Tehát mi int main csinál?
Mi volt az űrt?
CAMILLE REKHSON: Érvénytelen mondja tart semmilyen érvet.
Közönség: [hallható].
CAMILLE REKHSON: Tud beszélni egy kicsit hangosabban, bocs?
Közönség: Igen, sajnálom, miért teszel érvényteleníti az elsőt,
majd int bemenet a második?
CAMILLE REKHSON: Ó, az a két different-- a fő funkciója
szemben a kocka funkció?
Tehát a fő funkciója, használjuk semmis, mivel ott
nincsenek paraméterei, hogy hozott.
Míg a kocka funkciót, van egy bemenet.
Ezért azt mondja int, bemenet, mert vannak olyan érvek, hogy mi vagyunk
Figyelembe kell futtatni a funkciót.
Igen.
Vannak-e olyan kérdések?
>> OK, majd gyorsan lebegőpontos pontatlanság.
Tehát van végtelen sok valós számok.
De már csak egy véges számú bitet
hogy tudjuk használni, hogy megjelenjen az említett számok, és az őket képviselő.
Így aztán a végén néhány pontatlanság.
És a számok nem Mindig elég pontosan mit
azt hiszik, hogy ha éppen foglalkozó lebegőpontos.
Ez csak valami jó tudni.
Kérdések erről?
Igen.
>> Közönség: Ez utalva Az ötlet, hogy kicsit túlfolyó
ez volt az előadás?
Volt, hogy valami külön?
>> CAMILLE REKHSON: Ők teljesen különálló, igen.
Jólvan szuper.
PULAK Goyal: Üdv mindenkinek.
A nevem Pulak, és én megy át mutatók.
OK, úgyhogy elsőre gondolnánk mit memória néz ki.
Szóval mint látható itt, hogy a memória és azt szét kell osztani
egy csomó blokkok.
És mi minden hivatkozás blokkolni egy címet, ugye?
És emlékszik még rá valaki, hogy milyen típusú jelölést használjuk annak jelölésére, a címe?
>> Közönség: hexadecimális, 0X.
>> PULAK Goyal: hexadecimális, ugye?
Tehát a 0X jelenti vagyunk beszélünk hexadecimális.
OK, így Hogyan teremtjük mutatókat?
Így vesszük a típus, amit tedd it-- adhat csillagot is,
majd adjuk hozzá a változó nevét.
Tehát a példák láttunk int csillagos x, y char csillagos, és úszó kezdeni részt.
Tehát amikor azt mondom int csillagos x, tud valaki mondja meg
amit én egyfajta beszél ott?
>> Közönség: A helyszín a lemezen.
>> PULAK Goyal: Sajnálom, mi?
Meg tudnád ismételni, hogy?
Közönség: A helyszín a lemezen.
>> PULAK Goyal: Tehát akkor mi actually-- Úgy értettem, amikor van int csillagos x,
azt mondjuk teremt egy mutató, és ez
tárolhatja a címét egy változó, ami egy int, ugye?
Tehát char csillagos y, hozunk létre egy mutatót
hogy képes tárolni a címet Egy változó, hogy ez egy char.
Szóval, hogy van értelme mindenkinek?
Oké, rendben
>> OK, így a mutató, vannak Két fontos műveletet, amit tehetünk.
Van hivatkozva, és Van dereferencing.
Igen?
>> Közönség: Tudnál menni egy kicsit lassabban?
>> PULAK Goyal: Persze.
Ja, so-- Ja, hogy kérdéseket tegyenek fel, ahogy megy valamint ha you-- ha valami nem világos.
Szóval mi hivatkozva és dereferencing.
Tehát, ha azt akarjuk, hogy a cím Egy változó, majd a jelet.
Mondjuk én nyilvánította int x valahol.
És azt akarjuk, hogy a címe, hogy és adja át az, megtenném-jel x.
És ha azt akarjuk, hogy a értéke hozzárendelve egy mutatót,
használja a hivatkozás feloldási üzemeltetője, amely egy csillag.
>> Tehát mondjuk kellett int csillagos x, és Nem volt ez mutat valamit.
Ha azt akarom, hogy az értékét, amit ez mutatva, én csak csinálni csillagos x.
Világos?
Bármilyen kérdése van ez?
Igen.
>> Közönség: Tehát általánosságban, akkor nem lesz képes megtenni az x és csillag
x ugyanazzal x.
Ez helyes?
Mert ha x egy változó, akkor van
tenni az x kap, hogy egy mutató.
De ha x egy mutató, akkor meg kell tennie csillagos x, hogy a változó.
>> PULAK Goyal: Igen, így a kérdés az volt, hogy mikor
mire használjuk a star-- ha azt használja a csillag,
és mikor használjuk a jelet, és mi
használni az azonos típusú változó?
Így általában ha van, Például, egy int x,
akkor inkább használja a és jelet kap a címe, hogy.
Mert nem teszi értelme hódolat be x.
Mivel ha lenne int csillagos x, akkor lenne a hivatkozás feloldási művelet
mert semmi értelme sem volna használni az x ebben az esetben.
Van ennek értelme?
>> Közönség: így nem lehet és, majd egy mutatót?
PULAK Goyal: Szóval technikailag, ténylegesen
tehet a jelet a mutató.
De ez ki a hatálya ebben az osztályban.
A purpose-- a srácok " célokra, ha van mutatók,
szeretné használni a hivatkozás feloldási üzemeltető hogy a kapcsolódó értéket, hogy.
És ha már a rendszeres változók, mint egy int x,
szeretné használni a jelet üzemben, hogy a címe, hogy.
OKÉ?
>> OK, így nézzük meg pointerek és mi történik a motorháztető alatt.
Tehát az első dolog, amit tettem itt A bejelentett int x = 5.
A címe ez a változó jelentése 0x04, és ez az érték 5.
Nézzük, mi történik A következő sorban.
Így most kijelentem mutatóval.
A cím 0x08, és érték az x címét.
Van ennek értelme mindenkinek?
Bármilyen kérdése van ez?
>> OK, és most lássuk, mi történik a következő sorban.
Tehát ezt a következő sorban, van A címe példányt pedig 0x10,
és értéke 5.
Tehát az oka annak, hogy van öt ez azt mondtuk, dereference
mutatót, ami azt nyilvánították int csillag.
És ez így went-- amikor követéssel azt, ez azt mondtuk, rendben, mi van a nyílásba 0x04.
És elment, hogy.
És mi x egy x0-- 0x04, és ez az érték 5.
Ennek van értelme?
Igen?
>> Közönség: Miért van az másolata címét mindössze 4 byte feletti x mutatót?
>> PULAK Goyal: Igen, ez egy hiba on--
>> CAMILLE REKHSON: Szóval, igen, emlékszem ez van írva a hexadecimális.
PULAK Goyal: Ó, igen.
CAMILLE REKHSON: Tehát ez valójában 8, majd 16
mert azt mondta, hogy, a mutató, emlékszem,
a mi IDE lesz 8 bájt hosszú.
PULAK Goyal: Igen.
Szóval, csak hogy tisztázzuk, pointerek 8 bájt hosszú.
Int 4 bájt.
Tehát az oka annak, hogy mi ugrott 0x04 hogy 0x08
azért van, mert meg kellett csinál egy ugrás 8 bájt.
És akkor for-- óta másolatot csak egy int,
ez 4 byte, ami fele a 8 bájt.
Szóval csak ugrani 0x10, amely két távol 0x08.
Más kérdés?
OK, let's-- igen?
>> Közönség: Miért nem az értéke int másolat
Csak the-- miért van az, 5 helyett 0x04?
>> PULAK Goyal: OK, miért van az, 5?
OK, így amikor the-- úgyhogy először gondol erről szempontjából típusok.
Szóval azt mondom, int másolatot egyenlő mutató csillag.
Tehát mi az a típusú mutató?
Ez egy int csillag.
És amikor követéssel, hogy A típus válik int.
Tehát mi azt várjuk, hogy tárolja Itt valójában egy int.
Ennek van értelme?
Közönség: Persze, kicsit.
PULAK Goyal: Tehát általában akkor, úgy gondolja szempontjából típusú,
segít megérteni, mi a érték típusát, hogy oda kellene mennünk.
Szóval akkor általában zárja ki sok ilyen gyakori hibák
gondolkodás szempontjából típusok.
Hadd menjen át egy kicsit több diák.
És mi tud kap kérdéseire a végén a mutató szekciója.
OK, így van egy hibás program itt.
És így nem anyone-- tud valaki mondani nekem mi a baj ezzel a programmal?
Jobb, így mi vagyunk számítottam, hogy itt csinálni
is-- mit akarunk csinálni van, hogy a változó int x
és kapcsolja it-- hogy egyenlő 5 3 helyett, majd nyomtassa ki ezt.
De ez nem történik.
Tud valaki mondja meg, miért?
Igen?
>> Közönség: Amikor a funkció to_five veszi x hiszen ez az érv,
nem veszi x maga, hanem ehelyett egy olyan másolat, egy, az ez.
És ez képezi tevékenységét az adott.
De azért, te nem megváltoztatni a tényleges értéke x.
Mivel te [hallhatatlan].
>> PULAK Goyal: Jobb, Rendben, ha hívjuk
A funkció to_five, mit csinálunk gondolkodik,
adj egy példányt a értéket, hogy a funkció.
Ezt a funkciót, akkor megy és csinál egy manipulációk.
De ha egyszer visszatér, ez most ki A hatálya a fő funkciója van.
És így x még mindig, sőt, egyenlő 3, és kinyomtatjuk 3.
OK, így lássuk, hogy ez hogyan történik.
>> OK, így nincs semmi nyilvánította.
Ezután, itt, x értéke egyenlő 3.
És most is-- pozícióban Két, a még mindig nem hatályú.
És most megyünk a harmadik helyen, ahol a most feltételezi az értéke 3.
Négy, most változtatni egy 5.
De most, amikor ugrunk vissza öt, ami a print,
Egy most körbe.
És x még mindig egyenlő 3.
Van ennek értelme mindenkinek?
OK, így most beszéljünk arról, hogyan tudjuk használni mutatók segít.
Van valakinek valamilyen ötlete, hogy hogyan lehetne kijavítani ezt a mutatók?
>> Közönség: Veszel egy int csillagos ahelyett, hogy egy int a to_five.
>> PULAK Goyal: Elnézést, tudna szólni?
>> Közönség: Veszel egy int csillagos ahelyett, hogy egy int a to_five.
PULAK Goyal: OK, igen.
Úgyhogy pass-- helyett az elmúlás csak az érték, hadd adja át történő hivatkozással.
Ez az új funkció, nem igaz?
És így átadásával a címet, akkor tehetünk manipulációk a címet.
És így vagyunk valójában, sőt, a változó x.
Nézzük, hogyan működik.
>> OK, így ebben a példában a fix it.
Már megváltozott a aláírással A to_five hogy egy int
csillag helyett csak egy int itt.
Aztán hivatkozás feloldási ezt Egy és hozzá 5 hozzá.
És most ez az akarat, sőt, print 5.
Tehát lássuk, hogyan lépések itt dolgozni.
>> Tehát az első lépés, nincs semmi kijelentette még.
Tehát itt, a második lépésben, mondtunk x egyenlő 3,
de még mindig nincs hatálya.
Most a harmadik sorban, van x még mindig egyenlő három.
És most, mi telt in-- mi tárolt most az x címét.
Van ennek értelme mindenki, hogyan jutottunk, hogy?
Jobb, mi van a amper-- ez hogyan elhaladtunk-jel x a függvény
to_five.
És akkor a következő sorra, mit mi, a mi dereference a.
>> És dereferencing egy, képesek vagyunk változtatni az x értékét 3-5.
Mivel x él azon a címen 0x12.
És akkor végül, amikor mi visszatérünk a fő,
bár ez egy most ki hatálya, mi, sőt, megváltoztatta x.
És ez 5.
Bármilyen kérdése erről?
Igen?
>> Közönség: Meg tudja mondani, mi a jelet x volt?
Azt hittem jelet volt, mint ÉS.
>> PULAK Goyal: Igen, így használjuk ugyanazt szimbóluma sok különböző dolog.
Tehát itt, ha have-- a Ebben az esetben, ha van,
I. guess-- így ebben az esetben, amikor van dolgunk, mutatók,
ha fel a jelet előtt Egy int, változó int, vagy char,
vagy áramlás, amit mondasz van, hogy nekem a címe ennek.
De mit gondol, amikor mást Ön is használja & karakter, mondjuk,
Egy if.
Van egy igazi, és bizonyos változók hogy értékelje a bizonyos logikai,
és néhány más változók hogy érvényesítse néhány logikai
és azt akarjuk, hogy az, és erre.
Akkor is használja a jelet.
1. Előadó: Igen, így csak ma, nekünk beszélt három különböző célokra
A jelet.
Van két és jel, amely mi Pulak nemrég ismertetett.
Van egy jelet, amely amit Camille leírt
korábbi, amely az egyik ampersand.
És ez a bitenkénti ÉS.
És észre, hogy mind a feltételes és-- vagy, sajnálom,
A logikai ÉS és a bitenkénti ÉS, azok két szám, ugye?
Olyan volt, mintha jelet jelet valamit,
valami jelet valamit.
Itt, amikor már csak jelet valamit, ami dereferencing.
>> PULAK Goyal: Igen, nagy kérdés.
Igen.
>> Közönség: Miért összhangban 5a és csillag egy válnak N / A?
Miért nem csak egyfajta megtartja a Ugyanezeket az értékeket az előző sorból?
>> PULAK Goyal: Mivel mi már kilépett a funkciót.
És akkor mi van happens-- így what-- most mi vagyunk
ki körét, hogy a funkció, mi történik valójában
azok, eltávolítjuk a memóriából.
Igen.
>> Közönség: Két 3 vagy 4 csillag = 5.
PULAK Goyal: Igen.
Közönség: Mit jelent ez pontosan jelöli?
PULAK Goyal: Mit jelent ez?
Közönség: Igen.
PULAK Goyal: Tehát a kérdés az volt, hogy mi
hogy-- mit csinálsz Online amikor azt mondjuk, csillag egyenlő 5?
Úgy emlékszem, a csillag a követéssel üzemeltető.
Tehát, amikor egy, ebben az esetben, egy mutató.
Ez egy int csillag.
Tehát amikor hivatkozás feloldási egy a használja a csillag, amit mondunk
van, menj, amit tárolnak, címét, tárolt egy-- így take-- így egy,
Most, néhány címet tároljuk benne.
Menjünk vissza, hogy a cím mutat, és most változtatni bármi is legyen az, hogy öt.
Igen.
>> Közönség: Tudsz mondani ez egyszerűbb szavakkal?
Változás a címét egy 5.
>> PULAK Goyal: Nem vagyunk változó a címét egy 5.
Egy néhány cím benne, amely a változó címével az érdeklődés.
És így, amit mondunk amikor követéssel van,
most szeretnénk change-- mi most referenciái
A változó érdeke közvetlenül.
Van ennek értelme?
>> 1. Előadó: Egy másik módja annak, hogy úgy gondolja, annak egy go-- így egy olyan címet.
A csillag azt mondja, megy, hogy a kezelésére és nézd meg az értékét.
És most az értéket 5.
Tehát azt mondja, menj a x címét, amely
lesz, mi tárolt egy, és változtassa meg a 5.
PULAK Goyal: Igen?
Közönség: Szóval a helyzet az, ahol a mutató megy, a címet.
De az érték egy hozzárendelt értéke a cím alapján.
PULAK Goyal: Igen.
Bármilyen további kérdése van ennek?
Közönség: Lenne egy kérdésem.
PULAK Goyal: Ja, bocs.
Közönség: Tehát, ha store-- így Ha azt mondod, [hallhatatlan] a.
PULAK Goyal: Igen.
Közönség: Van, hogy tárolja az x-jel?
Miért nem mondod x mielőtt az int [hallhatatlan]?
PULAK Goyal: So--
Közönség: [hallható].
PULAK Goyal: Akárcsak a question-- ó.
Szóval a kérdés az, miért nem we-- A funkció to_five, miért nem tudunk
csak át egy x, ugye?
>> Közönség: Igen.
>> PULAK Goyal: OK, igen, így ez ismét nyúlik vissza, a vitát típusok.
Így a funkció to_five most vár típusú int csillag.
Tehát mi az a típusú x?
X csak egy int.
De mi ez a funkció elvárja egy int csillag.
Szóval, arra számít, hogy egy változó van egy címet tároljuk benne.
Szóval így you-- tegye a jelet, és így ez
hogyan adja át a címet, ami now--
és hogy értelmezi, hogy mint egy int csillagos, igen.
Nagy kérdés.
Más kérdés ezzel kapcsolatban?
Oké, rendben.
>> OK, így most beszéljünk mintegy mutató aritmetika.
Tehát itt, hozzátéve és kivonva i állítja a mutatót
ai akkora típusát mutató bájt.
Tehát nézzük meg, hogy hogyan néz ki.
Tehát itt, mi már bejelentett int x = 5.
És most mi lesz arra, hogy egy mutatót y, és adja át a címét x ott.
Tehát van, hogy.
Így x tárolják 0x04.
Tehát most y egyenlő legyen.
És akkor valaki mondja meg, mit gondolnak fog történni, ha teszünk y plusz értéke 1?
Igen?
>> Közönség: Lesz változás 0 alkalommal 0 8?
>> PULAK Goyal: Méret és type--
>> Közönség: Te mozog a címet.
PULAK Goyal: Ja, hogy was-- igen.
Olyan igaz.
Szóval ez meg fog változni a 0x08.
És because-- így azt használni ezt képlet, 1 alkalommal a méret a mutatót
és a pointerek a size--
>> [DIÁKOK zörej]
>> PULAK Goyal: Így van.
>> [DIÁKOK zörej]
>> 1. Előadó: Szóval az a típus, a mutató az alábbiakra:
>> PULAK Goyal: Az, igen, igen, ez 4 byte.
>> 1. Előadó: Szóval ints 4 bájt.
>> PULAK Goyal: Tehát, ha már egy-- nézzük mondjuk kijelentette, azt hiszem, egy kar.
Mi lenne hogy-- úgyhogy azt mondom, Van char x egyenlő egy, vagy valami.
És mi volt a címe, hogy 0x04, mi lenne y plusz értéke 1 tenni most?
Sajnálom, hogy mit?
>> Közönség: 0x05.
PULAK Goyal: 0x05, ugye.
Mindenki látja, hogy?
OK, most mondjuk, hogy ez egy úszó.
Mi történne?
Bárki?
Szóval úszók hány bájt?
>> Közönség: 4 byte.
>> PULAK Goyal: Így van.
Így lenne ugyanaz, mint ez.
Hűvös.
OK, és most beszéljünk mintegy mutatók és tömbök.
Szóval látta ezt a előző két p-készletek,
ahol tudunk treat-- így tömbök és mutatók nem ugyanaz a dolog.
De tudjuk kezelni tömböket mutatók.
Tehát itt, itt van ez a tömb Itt, amely három slot.
Az első slot-- mi Van egy, két és három.
>> Tehát, ha we-- így tudunk rendelni hogy azzal, hogy van tömb,
követéssel, hogy.
És amikor hivatkozás feloldási hogy mi valójában csinál
van utalva ugyanabba a foglalatba.
Tehát csillagos tömb értéke 1.
Mi could- hogyan lehetne írunk hogy-- mi
Más úton írhatnánk, hogy?
>> Közönség: Array 0 egyenlő 1.
>> PULAK Goyal: Pontosan, Mindenki látja, hogy?
Tehát ugyanezt itt.
Tehát amikor már tömb plusz 1, mi do-- így even--
emlékszem számtani hogy csak beszélt, amikor ezt tesszük, plusz 1
vagy mozgassa át a 4 byte, ugye.
Mindenki látja, hogy?
És azon az oldalon, amikor dereference hogy tudjuk meg, hogy a 2.
És ez az, hogyan állítsa A következő elem 2.
És így egy alternatív módon írni hogy is lenne tömb konzol
0 szögvas 1.
>> Közönség: Szüksége van a zárójelben?
>> PULAK Goyal: Igen, mert te dereferencing a teljes mennyiséget
tömb plusz 1.
OK, és ugyanezt tömb plusz 2.
Bármilyen kérdése erről?
Igen.
Közönség: Szóval tömb automatikusan 0?
>> PULAK Goyal: Array is-- sajnálom, mi?
>> Közönség: Array 0.
A címe tömb csak 0.
>> PULAK Goyal: Szóval a kérdés az volt, a címe tömb csak 0?
Szóval, nem, tömb van néhány címet.
Tehát amikor követéssel azt, that's-- így gondolja about--
Szó szerint, mint egy mutató mutató Az elején egy tömbben.
Szóval, hogy van néhány címet.
Nem tudjuk, mi az.
De amikor követéssel, hogy tudjuk, ez a kezdete a tömb.
És így amikor mozognak 1, mi csak mozgó
képest, ahol erre a címre volt.
Más kérdés?
Igen?
>> Közönség: Szóval, ha tömb tartó plusz 1--
PULAK Goyal: Sajnáljuk, Én-- tudna szólni?
Közönség: Igen, ha nem array zárójelben [hallhatatlan].
Tehát ha tesz az pointer--
PULAK Goyal: Sajnálom, nem hallom Önt.
Tudsz mondani, hogy még egyszer?
>> Közönség: Te OK.
>> PULAK Goyal: OK, bocs.
Oké, rendben.
Any-- igen.
Tehát, ha megy a tömb tartó 3--
>> PULAK Goyal: Igen.
>> Közönség: --isn't there-- nem ez négy foltok, mint a 0, 1, 2, és 3?
Miért nem int tömböt 2?
>> PULAK Goyal: Nem, így csak az egyezmény A C is-- ha kijelentjük a tömb,
we-- száma tesszük van hány slot akarunk.
De az indexek a tömbben valójában tömb 0, 1 tömb, és a tömb 2.
Tehát csak az egyezmény arról, hogy hogyan nyilvánításáról tömböket.
Igen, bármilyen más kérdés?
Igen.
Közönség: Szóval mi még mindig beszélünk mutatók, ugye?
PULAK Goyal: Igen.
Közönség: Tudnál még csinálni Star az array 0értéke 1?
PULAK Goyal: Nem, nem, so-- OK, így a kérdés az volt, lehetett
csak csináld csillagos tömb tartó nulla, majd azt mondják, hogy egyenlő 1.
Szóval, nem, amit mondunk Itt van, hogy tudjuk think--
tudjuk kezelni tömböket mutatók.
Tehát have-- mi vagyunk mondás van két módon
Eddig való hivatkozás azonos blokkban.
Tehát doing-- ha tömb nulla, Az a fajta, amely most egy int.
És ha Ön a csillag, kapsz egy érvénytelen dolog.
Tehát mi azt mondjuk itt, van két alternatív módon
hogy ugyanarra a blokk.
Akkor sem csinálni tömb konzol 0értéke 1.
Vagy meg tudod csinálni dereference tömb, és hogy egyenlő 0.
Tehát csak két módon ugyanazt a dolgot.
Igen.
>> Közönség: Miért nem mérete int 1 felvenni az alábbiakra:
>> PULAK Goyal: Méret int 1.
>> Közönség: Mert ez mozog egy egyszeri.
>> PULAK Goyal: Mert ez az, ahogy a C működik.
Ez már csak így mutató aritmetikai van definiálva.
El fog tartani a mutatót.
És akkor bármit is hozzá rá, hogy majd szorozza meg
a méret bármilyen A mutató üzlet, igen.
Igen.
>> Közönség: Szóval azt mondod, tudjuk kezelni mutatók és tömbök azonos,
de hát ők mások.
Szóval mi teszi őket más?
Mi nem tehetjük meg a az egyik, de nem a másik?
>> PULAK Goyal: Az E osztály, azt hiszem it's-- mit you--
>> 1. Előadó: Szóval, we-- OK, igen, Például, ha a memóriát lefoglalni
és van egy mutatót egy egész szám, például.
Ha megpróbálta elindítani Ennek mutató aritmetika
és túlmutatnak a memória mennyisége Ön kiosztott, azt befut a hibákat.
Tudjuk, tömbök, mi azt mondják, idő előtt, OK,
szeretné allocate-- ez alapvetően mondja, szeretnék kiosztani
elég hely a három egész szám.
És így most tudjuk kezelni a memória, mintha van az itt felsorolt ​​három egész szám.
Vajon ez a fajta értelme?
>> PULAK Goyal: Igen.
Igen.
>> Közönség: Tehát egy csillag tömb, hogy hozzárendeljük 1
a 0 index a tömb?
PULAK Goyal: Igen.
>> Közönség: Szóval, mi után következő két sor szempontjából the-- I
megérteni, hogy akarsz használni mutató számtani itt,
De ismétlem, nem értem, mit mutató aritmetika.
Tehát a tömb plusz 1, akkor mondván, hogy te most
szeretne majd beszélni Az első index a tömb.
>> PULAK Goyal: Jobb, és így a ok, ami működik is, tömb,
Itt, mi lehet gondolni, mint egy int csillag.
És így ha mi mutató aritmetika rajta, emlékszem, a képletben
veszünk the-- Azt hiszem, bármi A jelenlegi cím,
majd ha hozzáadjuk 1-et, valójában
szorozzuk 1 által mérete A dolog vagyunk manipulálni.
Tehát ebben az esetben, a méret a int.
És akkor mozgatni továbbítja az, hogy sok.
>> 1. Előadó: Tehát úgy, mintha Van b tömb csillag.
PULAK Goyal: OK, igen.
1. Előadó: a kezével.
Menjen ide.
PULAK Goyal: Vagy tudok csak-- igen.
Szóval here-- OK, így tömb a kezdődő, csak itt.
Tehát amikor követéssel, tömb, voltunk Csak utalva az első blokk van.
De most, amikor én tömb plusz 1, hogy is-- hogy nyíl most itt van.
Van ennek értelme?
Jobb, mert ez a blokk a méret int, amely 4 bájt.
És igen, mit csinálunk a mi mozgó, hogy a mutató 4 byte át.
Amikor mi számtani rajta, akkor mindig
mozgassa onként 4 byte.
Mert ez olyan, mint egy int csillag.
Ennek van értelme?
OKÉ.
>> Közönség: Tehát a dolgokat a tömbben volt 5 byte, mi lenne mozgatni 5 bytes--
>> PULAK Goyal: Jobb, ha tehát volt egy char csillag, mi lenne mozgassa az 1 byte csak.
Tehát abban az esetben, char csillagok, ez lenne csak lenni mozgassa át 1.
Közönség: Ahhoz, hogy a következő szüksége van egy csillag.
PULAK Goyal: Igen, igen, nem, hogy van értelme?
1. Előadó: Mi lehet beszélgetni erről még később.
PULAK Goyal: Igen, igen, az biztos.
Oké, rendben.
Térjünk át a következő részhez.
1. Előadó: Ó, OK hűvös.
Igen, ez vagyok én.
Rendben, félelmetes.
OK, hűvös, így most vagyunk rá egy kicsit általánosabb információkkal memória.
Azt is értékelem azt a tényt, hogy mennek elég gyorsan.
Ez egy csomó anyagot kap keresztül egy óra és fél.
De ha van olyan téma akkor akarok menni mélyebb figyelembe,
megyünk, hogy Munkaidőben a héten
ahol beszélgethet velünk egy az egy.
Vagy csak jön a vége, és mi beszélgetni dolgokat.
És mint mindig, úgy érzi, szabadon kérdezzen.
Fantasztikus.
Tehát itt van a kép memória láttunk előadás egy milliárd alkalommal.
És tudjuk, hogy ez a verem felnő alulról
és a kupac lefelé növekszik.
És mi a különbség a dolgok között hogy megtartjuk a halom, és a dolgok
hogy megtartjuk a stack?
Valaki dobja valami odakint.
Igen.
>> Közönség: Vajon verem A dolgok, amelyek csak
mulandó változók mi csak nyilvánításáról használata bizonyos funkciók?
1. Előadó: Gyönyörű, igen.
Így bármikor, amikor, mondjuk mondjuk mi vagyunk a funkciót,
és már csak néhány helyi változók.
Azok fog a végén a verem.
Ezzel szemben, ha hívjuk malloc és valóban memóriát foglalni,
hogy mindig jön a kupac.
Szóval, igen jó?
>> És úgy emlékszem, hogy minden memória hogy allocate a malloc,
hogy fog a végén a kupac.
És ha elfelejti ingyenes, akkor a számítógép
Nem fog tudni, hogy Ha elkészült vele.
Szóval ez csak fog lógni ott a memóriában.
És akkor lényegében szivárog, hogy a memória.
Te hogy elveszítik azt.
Mert soha nem mondta a számítógép, hé én végeztem használja, nyugodtan használja,
hogy más dolgokat is.
Hűvös.
Bármilyen kérdése van?
Igen.
>> Közönség: Szóval milyen A memória verem?
Nem dinamikus takarmány, felhatalmazáson?
Mi lenne a neve?
>> 1. Előadó: Persze, így lehet gondolok rá, mint lokális változók.
Aktuális hívások funkciók fognak felhalmozódni.
Akármi más?
Igen?
Közönség: hogyan ingyenes A memória hozzá the--
1. Előadó: Persze, így ha kiosztani memóriát a kupac, hívja malloc.
És akkor, hogy megadja neked vissza mutatót néhány cím memóriában.
Tehát mondjuk, hogy hívtál, hogy a mutató, igaz?
Ezután csak annyit szabad mutatót.
És, hogy felszabadítja a memóriát.
Hűvös.
Más kérdés?
Igen.
>> Közönség: Mit dinamikusan kiosztott jelent?
>> 1. Előadó: Dinamikusan kiosztott azt jelenti, hogy a tanfolyam a program.
Tehát, ha hívja a malloc közepén a programot,
elején a program, nincs memória mennyiségét.
És mint a számítógép átléphető a kódot,
ez meg fog kiosztani a memóriát.
Szóval ez az, amit értünk dinamikusan.
Jó kérdés.
Igen?
Közönség: Ha definiálni tömböt a szögletes zárójelek,
nem, hogy még mindig [hallhatatlan]?
1. Előadó: Ez egy jó kérdés.
Azt hiszem, ha kiosztani egy tömb, ez valóban olyan, hogy a verem.
Nem vagyok pozitívan hogy így nem adják meg.
>> Hangszóró 2: Azt hiszem, igen it-- hogy hozza meg a veremben.
>> 1. Előadó: fogalmaz a verem.
OK, hűvös, megerősítette.
Más kérdés?
Igen?
>> Közönség: Ha delegálni malloc, nem a számítógép automatikusan
memóriát kiosztani a változók?
1. Előadó: Igen, a A helyi változók,
automatikusan helyezi memória a verem.
Közönség: Szóval mi a pont a malloc?
1. Előadó: Mi a pont a malloc?
Szóval láttunk egy csomó példát, mint például a swap,
ahol szeretnénk hatálya A változó, hogy valami
nem csupán a funkcióját hívást.
És szeretnénk valamit hogy tudjuk átadni körül
és hogy mi lehet hozzáférni különböző helyekről.
Ez az, ahol akarna tedd memória a kupac.
Annak érdekében, hogy ezeket a különböző funkciók számára is hozzáférhetők.
>> Közönség: Lehet csak magyarázni?
>> 1. Előadó: Tehát az egyik lehetőség is-- így a kérdés az volt, akkor mi csak allocate--
bocs, tudjuk kinyilvánítására globális változó, lényegében.
Ez az egyik lehetőség.
De sok ilyen, az említett inkább, hogy nagyon rendetlen.
És általában úgy gondolja, Az, hogy a rossz tervezés.
Igen.
Cool, más kérdés?
Fantasztikus.
OK, a továbblépés.
Tehát ez valójában hogyan memóriát lefoglalni.
Beszéltünk erről egy kicsit.
Mi használja ezt a funkciót nevű malloc.
És azt mondja, hogy hány bájtot memória, így, hogy hány bájt a kupac,
akarsz.
És ez meg fog visszatérni a címet, így a mutatót, egy darab memória
hogy ez kiosztott az Ön számára.
Így a típus lesz semmis csillag.
Ez lesz a mutatót Bármit is dönt, hogy ott.
Minden alkalommal, amikor hívja malloc, már mondtam
van, hogy kiszabadítsa így nincs memóriavesztés.
>> Mi a másik dolog, hogy feltétlenül
kell tennie minden egyes alkalommal, amikor hívást malloc?
OK, van, hogy kiszabadítsa.
Mi a másik dolog?
Ellenőrizze a null, gyönyörű.
Szóval, igen, ez így van ott fel a táblára.
Ha megpróbálja kiosztani memória és nincs szabad memória,
A számítógép azt fogja mondani, Nincs mit kapsz.
És ez ad vissza üres.
Kérdések hogy?
Igen.
>> Közönség: Miért lenne valaha szeretné Kijelentem, egy mutató egy bizonyos típusú
ha semmisnek csillagos képes kezelni minden mutató típus egyébként?
1. Előadó: Jó kérdés.
Miért mondjuk int csillagos szemben a semmissé csillagos
ha semmisnek csillagos tudja kezelni mindent?
Tehát mi nem akarjuk, hogy valaha is kifejezetten leadott mutatók.
Ez csak rossz gyakorlat.
De fogunk beszélni int csillagok Csak a megértése,
ez egy mutató egy egész.
>> Közönség: OK.
>> 1. Előadó: Igen, és ez lehetővé teszi, hogy manipulálják az értékeket meg
egészek.
>> Közönség: Ó, oké.
És érvénytelennek csillagos nem engedhetem meg?
>> 1. Előadó: Attól függ, hogy a összefüggésben Igen, úgyhogy ne aggódj
ne aggódj túl sokat a típus van.
Csak tudni, hogy általában, malloc Egy mutatót ad vissza valamit.
Jó kérdés.
>> Közönség: Miért szaporodnak ez alkalommal 10? [NEM HALLHATÓ].
>> 1. Előadó: Persze, így én csak Ennek véletlenszerű például itt, ahol
Azt akartam, hogy fordítsanak elegendő helyet biztosít a 10 egészek.
Csak egy véletlenszerű választás.
Igen.
Igen, mi a helyzet?
>> Közönség: Mit jelenti ellenőrzésével for null?
Szeretné, hogy ellenőrizze a pointer null vagy a malloc?
1. Előadó: Igen, pontosan.
Szóval a kérdés az volt, hogy mi értünk ellenőrzést null?
Szeretnénk az alábbiakra: bármikor hívjuk malloc és mi vissza egy mutatót,
azt akarom mondani, van pointer egyenlő null?
Tehát szó PTR.
Van PTR egyenlő null.
Igen.
Közönség: Szóval, kedves volt A kíváncsi, ha
formázza meg a mutatót a malloc, nem Emlékeztet, hogy az elején a malloc?
Mert ha ez egy array--
1. Előadó: Ez egy nagyszerű kérdés.
Ja, ha hívja a malloc, a mutatót, hogy it-- mondjuk,
Tehát itt vagyunk kiosztani 10 bájt memóriát.
Szóval, sajnálom, elég szoba 10 egészek,
fogunk kapni a címe hogy az első darabja a memóriát.
Ez egy jó kérdés.
Igen.
>> Közönség: kiosztásával 10 elterjedt egész számok,
lehet, hogy tényleg használni, hogy mutatóval általam elvártnál szinte
mint egy tömb az egész számok?
1. Előadó: Igen, így te is használni, mint egy sor egész?
Igen, pontosan ez az, amit Pulak csak megmutattam neked on-- pár csúszik ezelőtt,
ahol azt mondjuk, OK, ez Tényleg csak ilyen of-- vagyunk
gondol rá, mint egy tömb 10 egészek.
Ez most történik, hogy a kupac.
Közönség: De nem tudtunk elérni azt szögletes zárójel jelölés?
1. Előadó: Te tényleg lehetett hozzáférni azt szögletes zárójel jelölés, igen.
Akkor kezelje őket ugyanaz.
Igen.
>> Közönség: Miért Pointer valaha is null?
>> 1. Előadó: Miért lenne Pointer valaha is null?
Ha használja fel az összes A memória a kupacban.
Ha a program eszik fel, eszik fel, eszik memóriát,
és nincs semmi, balra, majd malloc fog say-- ha azt mondod,
Szeretnék még 100 byte, ez lesz mondani, én nem 100 byte.
Itt van null.
Ez azt jelenti, elbuktam.
Igen.
>> KÖZÖNSÉG: Ebben az esetben, null semmi, ugye?
>> 1. Előadó: Igen, az, hogy esetben null semmi.
Ön nincs címe.
Nincs emlékezet.
Rendben, tovább lépett.
OK, beszéljünk nagyon gyorsan mintegy puffer túlcsordulás.
Ha esetleg találkozunk a puffer-túlcsordulás?
Mondjuk van egy-- vagyunk lefoglalni egy darab memória,
és fogunk írni a húr.
És mi fog mondani, OK, megyek kiosztani
elég hely a hat karaktert.
És én fogom kérni a felhasználó valamilyen bemeneti.
És a felhasználó bemenet, például, helló.
És ami tökéletesen illeszkedik finom, mert van
helyiség minden karaktere hello, és a null lezáró karaktert.
Rengeteg hely, nem probléma.
>> De mi van, ha mi adjuk a lehetőséget A gonosz felhasználó a programmal,
és írd be nem hat karakter, vagy nem öt karakter, hanem egy millió.
Tartják a gépelés, a gépelés, és gépelés, mi fog történni?
Nos, az csak az számítógépes enough-- vagy sajnálom,
csak megadta ezt a fonalat, elegendő hely 5 karakter.
Szóval, mi lesz, hogy valami ilyesmi Ennek ahol a gonosz ember, aki
gépelés bemeneti felülírhatja a puffer mérete,
és mehet valójában már az összeg hogy ez eredetileg kijelölt.
És akkor mit lehet tenni, a nagyon gonosz dolog, amit tehetünk,
ez felülírja a feladó címét.
Ami lényegében azt jelenti akkor milyen venni
irányítást a viselkedését a program.
Tehát egy nagyon magas szintű puffer túlcsordulás, amikor
kiosztani bizonyos mennyiségű memóriát.
És akkor you-- ezt, mert te felhasználótól származó adatokból, vagy valami
mint hogy-- megy át a határt abból, amit eredetileg kiosztott
és indítsa Messiás a program.
Igen?
>> Közönség: Miért nem, hogy csak visszatérni szegmens hiba?
>> 1. Előadó: Miért ne, hogy visszatérni szegmens hiba?
Megtehetem.
Néha a fordító vagy egy év alatt a futtató
valóban lesz, hogy ellenőrizze, hogy.
Ha bizonyos dolgok történnek, és ez a fajta alacsonyabb szintű,
akkor meg kell tudni.
De ha nem tervez Ezeknek a rendszereknek megfelelően,
akkor van esély A nem kapta el, és csak
amely lehetővé teszi a számítógép take-- a gonosz ember a számítógép vezérlésére.
Igen.
>> Közönség: [hallható]?
1. Előadó: Persze.
Ó, ha azt mondom, puffer, én csak azt jelenti, a memória mennyisége már kiosztott.
Tehát itt azt mondta, ó, most már kiosztott hat char-- elég hely a hat karaktert.
És én csak hívja, hogy az én puffer hol lehet adatokat írni.
Igen.
Más kérdés ezzel kapcsolatban?
Igen.
>> Közönség: Hogyan megállítani?
Hogyan megállítani?
1. Előadó: Félelmetes kérdést.
Hogyan megállítani?
Hogyan védekezik a puffer túlcsordulás?
Nos az egyik módja annak, hogy ez olyasmi, mint GetString, ahol folyamatosan növekszik
A memória mennyisége osztjuk ha a felhasználó belép egy csomó szöveget.
A másik az a helyzet, ha csak szeretnénk hat karakter, akkor egy gyors ellenőrzés.
Mondj egyetlen input hat karakter.
Igen.
Tehát mondjuk te dolgozik on-- megyünk
menni web dolgokat egy kicsit később a course-- de most
mondjuk Ön dolgozik egy űrlapot, akkor Csak korlátozza, hogy mennyi lehetett leadni.
Igen.
>> Közönség: getString húz memóriát verem, ugye?
Csak tisztázni?
1. Előadó: Még egy időben?
Közönség: Vajon getString hogy a memória a kéményből?
1. Előadó: Azt hiszem Getm-- get int veszi memória a kupac
mert felhívja alloc.
Közönség: Ó.
OKÉ.
1. Előadó: Igen, malloc és realloc.
Más kérdés?
Igen.
>> Közönség: Szóval meghatározásával a méret a pufferelés,
Ön nehogy valaki hogy képes beadni kód
hogy lehet csúszni az [hallhatatlan].
>> 1. Előadó: Szóval, meghatározza a puffer mérete,
már mondtuk, rendben itt van, hogyan mennyi memóriát tudunk használni.
Ha lehetővé teszi a felhasználónak, hogy írni rajta, akkor fogsz problémákba ütközött.
Van értelme.
Fantasztikus.
Haladjunk végig.
Minden rendben.
Apropó hibák, itt van néhány gyakori hibaüzenetek
amelyek azt mutatták fel, amíg nem voltál kódolás, dolgozik a probléma készletek.
Jó esély arra, hogy az egyik Ezek is feltűnik a kvíz
Ha már évek utalás.
Szóval, a válaszok egyfajta itt a fórumon.
De nyugodtan kiáltani egy kicsit.
>> Miért lenne szegmens hiba történt?
Mi lehet az oka kapsz egy szegmentációs hiba ha éppen fut a programot?
>> Közönség: [hallható].
>> 1. Előadó: Jó.
Igen, ha megpróbáljuk hozzáférést memória, ami nem adott nekünk.
Ha követéssel, egy null pointer.
Például, ha hívjuk malloc, és felejtsd el, hogy ellenőrizze, ha null,
és mi megpróbáljuk használja, a számítógép fog adni nekünk egy szegmentációs hiba.
Jó.
Mi a helyzet az implicit nyilatkozatot funkció?
Az mit jelent?
Közönség: Te akarják használni a funkciót, hogy még nem határozták meg.
1. Előadó: Jó.
Te akarják használni a funkciót hogy még nem határozták meg.
Szóval, hogy lehet egy két dolgot.
Lehet, hogy volt, mint a példa Camille mutatta meg korábban.
És van egy fő funkciója hogy felhívja úgynevezett kocka.
És mondjuk elfelejtetted hogy megírjam ezt a prototípust.
Elfelejtette mondani, hé számítógép, Én ezt a funkciót nevű kocka.
Majd meglátod később.
Tegyük fel, hogy elfelejtettem írni a prototípus, akkor lehet, hogy ez a hiba.
A másik dolog, mondjuk próbáltak használni printf,
és elfelejtettem, hogy tartalmazza A standard könyvtár,
akkor fog mondani implicit nyilatkozat funkciót.
Végül de nem utolsó sorban, meghatározatlan azonosító.
Igen.
>> Közönség: Van egy probléma körét.
Mint talán akarsz tárcsázza a helyi változó, hogy ez
egy másfajta környezetben.
1. Előadó: Nagy, tehát ha van Változó, hogy ez nem a hatálya,
és próbál használni, fogsz bajba kerülni.
És csak általánosságban, mondjuk használni próbálja x, egyre mondván int
x = 5, akkor te fog bajba.
Elnézést, kérdéseket ebben?
Félelmetes, chugging végig.
>> OK, rekurzió, miért might-- nézzük see-- Elfelejtett sch-- ó itt vagyunk,
csak arról, mi vagyunk nagyjából menetrend szerint.
Rendben, jó.
OK, rekurzió, az alapötlet rekurzió, egy rekurzív függvényt
egy olyan funkció, amely magát.
OK, ez az, amit én azalatt, hogy a program koncepciója
ahol egy függvény nevezi magát.
Mi lenne some-- mi egy jó ok az rekurzió?
Ha esetleg ez hasznos lehet?
Vagy izé olyan program, amely valóban alkalmas arra, hogy a rekurzió?
>> Közönség: bináris keresés.
>> 1. Előadó: bináris keresés alkalmas arra, hogy a rekurzió,
mert van ez a probléma, hogy lebontják kisebb darabokra,
és folyamatosan elvégzi ugyanazt az algoritmust rajta.
Ez vezet, sok esetben, több Elegáns kódot, ami pontosabb.
Csak a példa A bináris keresés.
Egy másik példa a merge sort.
Néha, amikor úgy gondolja, egy algoritmus, mint faktoros,
ez csak úgy érzi rekurzív, ugye?
Mert tudjuk, hogy a faktoriális 5 egy faktoriális 4-szer 5.
És így, amikor beállította a problémát így, ez csak úgy érzi rekurzív.
Tehát az lenne a nagyszerű módja annak, hogy írja meg.
Kérdések?
Igen.
>> Közönség: Mi az a bázis esetében?
>> 1. Előadó: Ó, milyen egy alapeset?
Azt mondta, ne felejtsük el, mely egy alapeset.
Mondjuk írtunk Egy faktoriális függvény,
és csinálunk faktoriálisát 5.
És tudjuk, hogy egy faktoros 5 5-ször egy faktoriálisát 4,
bla, bla, bla, bla.
Honnan tudjuk, hogy mikor hagyja abba?
Honnan tudjuk, hogy mi valóban van egy szám?
Mert ha hívogattam faktoros, akkor soha nem kap választ, igaz?
Tehát, ha tudjuk, hogyan kell megállítani a példában faktoros.
Bárki, igen.
>> Közönség: Amikor az 1 faktoros 1.
1. Előadó: Jó.
Tehát tudjuk.
Mi lehet magától értetődőnek, hogy 1 faktoriális egyenlő 1.
Tehát, ha eljutunk a pont, ahol mi hívja faktoros 1-jén,
csak megy előre és vissza 1.
És ez a bázis esetében.
Mivel tudjuk, hogy egyszer elérjük ezt, és mindig fogják érinteni fogjuk a never--
akkor nem csak menj örökre.
Más kérdés rekurzív?
Igen.
>> Közönség: Tehát, ha visszatér 1, ez csak automatikusan
leáll a program, igaz?
>> 1. Előadó: Igen, így, ha hívja return 1, if-- mondjuk,
mondjuk faktoriálisát 2 hívás faktoriálisát 1, faktoriálisát 1
majd csak visszaszolgáltatni 1.
És most faktoriálisát 2 fogja mondani OK, 2 szor 1 2, és vissza, hogy a választ.
Igen.
>> Közönség: Vajon kell aggódnia mintegy hatályú rekurzió
amikor bemész egy algoritmus?
>> 1. Előadó: Ó, igen.
Igen, ha nem kell aggódnia hatálya keretében rekurzió.
Tehát csak a változók meghatározása abban a futás a funkció
lesznek hasznosak.
Igen jó kérdés.
Rendben, maradjunk mozog.
Mert van egy csomó anyag átvészelni.
De mint mondtam, bátran hit fel munkaidejében vagy nekünk után a tényt.
>> Ez csak egy igazán gyors csúszda.
Sokat tanultunk arról keresések és rendezi.
Kérlek kérlek kérlek, ezek a szakaszok online
Úgy gondolom, a cs50.net/quizzes.
Szóval menj ezt a táblázatot, és tedd a felülvizsgálati lapot,
mert nem lesz Egy kérdés ez.
Kérjük, ne kap ez rossz.
Csak nagyon gyorsan, Mi ez a táblázat azt jelenti,
ez beszél a nagy o, amiről tudjuk, hogy a felső határa az algoritmusok
futási idő.
És mi van az Omega, amely lesz az alsó határ
Egy algoritmusok futási.
OKÉ?
>> Közönség: [hallható].
>> 1. Előadó: Igen, mi az utolsó dolog?
Mi theta?
Ez, ha we-- mi csak fog érdekel ebben az osztályban abban az esetben,
ahol felső korlátot és mi alsó korlát azonos.
Igen, ez az egyetlen alkalom, hogy fognak jönni ebben az osztályban.
OK, megyek, hogy folytassam.
Ha még nem szedte a képet, Ígérem, ezek lesznek az interneten.
>> OK, félelmetes, struktúrákat.
Mi lehet az oka akarunk struktúrákat?
Mi az a hasznos oka nem árt struktúrákat.
Valaki kiabál valamit.
Nos nézzük meg a Például a táblán.
Mondjuk van dolgunk mindezeket a diákok.
Ha még van egy program CS50, vannak, mint 800 fő.
Meg kell write-- megyünk kell kezelni a sok információ
a diákokról.
Jó lenne, ha tudtunk egyfajta csoportos
this-- minden olyan információt, köze van egy adott diák
az egyik típusú adatokat.
De tudjuk, hogy nincs adat típusú úgynevezett, Student, ugye?
Van egy egész, van egy úszó, van egy szöveg, vagy char csillag,
de nincs, egy diák.
>> Tehát amit tehetünk, valójában milyen meghatározzák saját szerkezete, nevezzük hallgató,
és mi lehet társítani néhány különböző területeken azzal a struktúra.
Tehát ebben az esetben, hadd mondjuk, hogy egy diák.
És a dolgok, hogy mi érdekel mintegy a diákigazolvány száma
és a hallgató nevét.
És most már tudjuk társítani ezt ID és ez a név, amelyet egy adott diák.
Nézzük néhány példát.
>> OK, így itt mondom, OK, menjünk mondjuk azt akarjuk, hogy egy diák.
Hívom diák 1.
És a személyi igazolvány száma, az Ebben az esetben, akkor érheti el
által csak ennek a neve a hallgató dot területén szeretnénk elérni.
Szóval ez lesz, hogy csak a diákok 1 pont azonosító, és mi meg azt egyenlő 1.
Mert emlékszem, azt mondtuk, hogy ID lesz egy egész szám.
És nagyon hasonlóan, azt mondhatjuk, ez a hallgató nevét lesz Davin,
például.
Így tudjuk csak elérni a területen Egy struct ezzel a ponttal.
Kérdések hogy?
Igen.
>> Közönség: Van mód védi a változókat?
Van-e módja annak, hogy megvédje változók attól, hogy kívülről hozzáférni?
>> 1. Előadó: Van egyébként megvédeni a változók
attól, hogy kívülről hozzáférni?
Nem a hatálya CS50.
Más kérdés?
Igen.
>> Közönség: Mi a typedef struct?
Mit jelent egyes komponensek jelent?
1. Előadó: Ah, mi a typedef struct?
Mit jelent minden egyes alkatrész értem ez a fickó?
>> Közönség: Igen.
>> 1. Előadó: OK, hűvös.
Tehát ez azt mondja, hé számítógép, szeretnénk létrehozni egy új struktúra.
És fogok határozni a meghatározás mert, mint, hogy tudnám használni
mintha egy típus egész programom.
OK, így azt akarom, hogy meghatározzák a szerkezetet.
És én most lesz tudja használni, mint egy típus.
És a neve diák.
És itt vannak a területen.
>> Közönség: Tehát az, hogy typedef struct [hallhatatlan]?
1. Előadó: Ha azt szeretné, hogy képes legyen Használja ezt a struktúra az egész programot,
és a legtöbb esetben a CS50 mi csinálni, azt kell mondanunk típusú Def.
És ez lehetővé teszi, hogy használja azt a ugyanaz hogy az általunk használt, mint int vagy float.
A számítógép Mindig tudja, mi az.
Igen.
>> Közönség: Meg tudjuk írni ez a header fájlt?
>> 1. Előadó: Ó, sajnálom.
Írunk ebben a header fájlt?
Akkor az alábbi, a tetején a programot, a tetején a C program.
Igen, ez lenne a leginkább ésszerű hellyé vált.
Vissza ott.
Közönség: ugyanezt a kérdést, így a főétkezések előtt?
1. Előadó: Jobb, meg kell, hogy ez valahol, hogy mindenki hozzáférhessen.
Szóval mielőtt fő az Ön esetében, igen.
Közönség: Van-e különbség üzembe hallgató a tetején és az alján?
1. Előadó: Ah, van egy közötti különbség üzembe diák
a tetején vagy alján?
Let-- menteni ezt a kérdést, és ha eljutunk a láncolt listák,
látni fogjuk, hogy, OK?
Szóval ragaszkodnak a, hogy egy másodpercig.
Az utolsó dolog, amit szeretnék megemlíteni itt, van ahelyett, amelynek szerkezete,
van egy mutató egy szerkezetet, meg tudjuk változtatni jelöléseinket
hogy egy kicsit szebb.
>> Elmondhatjuk, mondjuk van egy mutató egy diák helyett csak
egy diák.
Ha azt akarjuk hozzáférést a területen, ahelyett, során jól megy dereference a mutatót,
majd elérni a mező nevét.
Ezzel a jelöléssel néz ki egy kicsit rendetlen a csillag ebben a dot.
Teljesen korrekt, hanem egyfajta A tisztább módon kell csinálni,
csak mondani mutató nyíl nevét.
És a ténylegesen egyesíti dereferencing elérése és egy csodálatos szimbóluma.
Kérdések hogy?
>> Közönség: Csak azt mondják, hogy még egyszer.
>> 1. Előadó: Tegyük fel, hogy még egyszer.
>> Közönség: Pontosan mit mondott.
1. Előadó: Persze, hogy pontosan amit mondtam.
Ha van egy mutató egy diák helyett a tanuló maga,
mi can-- egyik módja, hogy tudjuk elérni a mező a hivatkozás feloldási, majd
hozzáférést nevét.
Egy másik, szebb módon meg tudja csinálni, ami csak
egy kis szintaktikai cukor, csak csinálni mutató nyíl nevét.
És hogy megy, hogy összekapcsolják a dereferencing és a csatlakozó.
Igen, nagyon klassz.
Minden rendben.
>> Szóval beszéljünk a másik kérdés.
Nézzük ugrani csomópontok, amely fogunk használni
a kapcsolt listák pillanatok alatt.
Tehát itt, észre fogod venni, hogy van az a szó csomópont mind az alsó,
és a tetején.
Korábban, amikor mi voltunk meghatározó hallgató, mi csak volt hallgatója az alján.
Nem volt hallgatója a tetején.
Bárki, aki tudja miért lehet?
Mi a különbség?
Igen.
Közönség: Szóval használja csomópont az a meghatározás, csomópont,
így ez egy rekurzív dolog?
1. Előadó: Jó.
Igen, szükségünk van a csomópontok Van mutatót más csomópontok.
Tehát mivel ezt a fajta mielőtt ez valójában meghatározott,
meg kell tenni, hogy a csúcson Csak így tudja, mi az.
Közönség: Szóval még mindig szüksége van rá az alján?
1. Előadó: Igen.
Közönség: Tehát mindig alul.
1. Előadó: Mindig alján.
Tehát minden a tiéd lesz van ez az alján.
Más kérdés?
Rendben, így lehetővé teszi, valóban beszélni mintegy láncolt listák nagyon gyorsan.
Tehát láncolt listák are-- használjuk őket helyett tömbök egyes esetekben,
mert tudjuk, hogy az elrendezések fix hosszúságú, míg a kapcsolt listák
tudunk növekedni, és összezsugorodik, ahogy szeretnénk.
Tehát ez egy példa, amit láncolt listájának nézhet.
Amire szükségünk, hogy van A lista élére.
Szóval, ha a listán indul.
Aztán Node, minden további csomópont az
feladata, hogy ismerjék ahol a következő csomópont.
Tehát ebben az esetben, a csomópont, amely tárolja a 1 felelős tudta, hol 3.
Az a személy, amely tárolja a 3. feladata, hogy ismerjék, ahol a 9.
És 9 senki mást mutatnak.
Ez az a lista végére, így csak azt mondja null.
OKÉ?
>> Közönség: Mi értelme ennek?
>> 1. Előadó: Mi értelme ennek?
>> Közönség: Igen.
1. Előadó: Mert, nézzünk mondjuk, hogy néhány adatot.
És nem tudjuk, hogy pontosan hogyan sok adatot akarunk idő előtt.
Tehát egy sor, mondjuk, ahol akarja számolni az emberek az első sorban.
Esélye van, hogy nem fog változtatni.
Mi csak annyit, OK, szeretnénk egy sor mérete hat.
De ha akarunk valamit hogy meg fog változni.
>> Például, mondjuk én próbáltam nyomon követni a diákok
ahogy jönnek be a szobába A felülvizsgálati ülésén.
Fogalmam sincs, hányan emberek fognak megjelenni.
Szóval érdemes adatstruktúrát hogy tudok bővíteni, és összezsugorodik.
Mert talán valaki hagyja, talán jön valaki.
És így bármikor, mi hozzáadása vagy eltávolítása a csomópontokat.
Cool, nagy kérdés.
Igen.
>> Közönség: Ha tudja használni valami ilyesmit getString
hogy tartja és lehetővé teszi, hogy több adatot szükség van rá, miért kell ezt túl?
>> 1. Előadó: Miért lenne használatakor láncolt lista, ha
tudod használni valami ilyesmit getString?
Ez egy jó kérdés.
Ne feledje, hogy Get-- egyik downfalls getString
az, hogy nem csináltunk egy nagyon jó munkát felszabadítása, hogy az emlékezet,
és bevezettünk egy csomó memóriavesztés a programba?
Lehet hogy ez egy statikusan méretű tömb, és folyamatosan növekszik is.
De ha volna találni Új helyen a memóriában.
Ez csak egy csomó fölött.
>> Az egyik szép dolog kapcsolódik listák, szemben a tömbök, a tömbök
mind ugyanazon a helyen a memóriában.
Meg kell folyamatos darabokat a memóriában.
Mivel láncolt listák, 2. és 3. teljesen különböző helyszíneken.
Mint a 2. ide, és 3 vége van.
És mindaddig, amíg van egy pointer egymáshoz, ez rendben van.
Tudjuk, hogy megtalálja őket.
Kérdés ott?
>> Közönség: getString függvénye A CS50 könyvtár, igaz?
Ez nem létezik valós programokat.
>> 1. Előadó: Helyes.
Rendben, ez a másik dolog.
GetString nem létezik keretein kívül a CS50.
Igen.
>> Közönség: Tehát az a tény, hogy Két lehet igazán messze egymástól,
nem, hogy hatással hatékonyságának hozzáférés az elemek a listán?
1. Előadó: Ez egy jó kérdés.
A kérdés az volt, ugye hatása A hatékonyság elérésének
ezek a különböző elemek a listán.
Tulajdonképpen igen.
Mert tudjuk if-- nézzük mondjuk azt akarjuk elérni
a második elem a tömb, tudjuk, mi csak csinálni tömb konzol 1, igaza van.
Mindig lesz lehet ugyanazon a helyen.
De ha azt akarjuk, hogy az, hogy 3, akkor nem csak azt mondják, megy, hogy 3.
Azt kell, hogy mondjam, OK, kezdje az elején a lista,
és most valóban van a séta, amíg nem
megtalálni a száma érdekel minket.
>> Tehát ebben az esetben azt mondjuk, OK ez az első szám.
Tehát lényegében ez indexe 0.
Most meg kell találnunk a második számot.
Ez index 1.
Szóval ez valóban lesz az alábbiakra: csak hozzáférés, fog tartani N időt.
Cool, nagy, öreg N. Igen.
>> Közönség: Mik az egyes listák?
Vajon minden tömbök, vagy mi?
1. Előadó: Ez egy nagyszerű kérdés.
Mik az egyes struktúrák, hogy én már húzott?
Ezek a csomópontok.
Tehát minden ilyen kis szerkezet két részből áll.
Meg van egy egész szám, amely birtokolja.
Ez a tényleges adatok hogy ez kapaszkodott.
Ez a fajta hasznos része.
És, ez az, amit teszi, hogy egy láncolt lista,
van egy mutatót a következő csomópontot.
Félelmetes kérdést.
Rendben, akkor nézzük meg nagyon Gyorsan nézd meg néhány példát
talán köze láncolt listák.
>> Tehát egy nagyon gyors példa, Gondolom azt akarjuk, hogy csinál egy kutatás.
Milyen keresés nem mi a láncolt listák?
>> Közönség: Binary.
>> 1. Előadó: Binary.
Miért ne használhatnánk a bináris keresés?
>> Közönség: [hallható].
1. Előadó: Igaz, mert a bináris keresés, meg kellett támaszkodnia a tény,
hogy mi lehetett csak ugorj a tömb bármely pontján.
Így egyszerűen azt mondják, menj hogy a középső elem.
A ide, ahogy mondta Egy kicsit korábban,
akkor nem csak ugrani a középső elem.
Annak érdekében, hogy megtalálják bármely elem, mi valójában
a séta a teljes lista.
>> Tehát ha azt akartuk, hogy nem a keresés, a legjobb, amit tehetünk, csak egy lineáris keresést.
Kezdjük a fejét, mi check-- mondjuk mi vagyunk
keres 9-- kezdjük meg a fejét.
Azt mondjuk, ez 9?
Nem.
Ez 9?
Nem.
Ez 9?
Igen, megtaláltuk.
OK, ez minden.
Itt egy kicsit a pszeudo-kódot.
Megyek, hogy elhagyja ezt az Ön számára srácok lemorzsolódás át a saját,
csak azért, mert kifutunk egy kicsit rövid az idő.
>> Beszéljünk szerelést.
Láttunk egy nagyon klassz demo Ezt előadás, ahol azt mondta,
OK, itt van ez a láncolt lista, ahol mindenki mutat egymáshoz,
és valaki jön fel a színpadra.
Hogyan írjunk, hogy személy a mi láncolt lista?
Nos, a rossz utat megtenni, amely Azt hiszem, van amit láttunk először,
az, amikor az a személy, elöl automatikusan
Rámutatott, hogy az új ember.
És akkor egyfajta felhagyott a második felében a listán, igaz?
Mivel nem tudjuk, hol ez a memóriában többé.
Tehát nagyon óvatosnak kell a annak reményében, helyezze a dolgokat.
>> Tehát itt, mondjuk azt akarjuk, hogy tedd 1 elöl a listán.
Először is, van 1 pont a második element-- vagy az elem
amely tartalmazza 1.
Szóval, ezt tesszük, csak azért nem vagyunk veszíteni fog a második félévben.
És most, mi lehet a feje pont 1.
Szóval megint, ez csak mint a szuper magas szinten.
Így tehetjük be egy csomópontot.
Van egy csomó pszeudo-kód here-- sajnálom,
Nem tudom, miért vagyok amelyben ez pszeudo-kódot.
Ez maga a kód.
Akkor menj nézd meg később.
>> Rendben, nézzük nagyon quickly-- több kérdésre
a kapcsolt listák, mielőtt mozogni rá egy pár egyéb adatok
struktúrák az utolsó 10 perc.
>> Közönség: Szükség van-e most hogyan kell írni egy teszt?
>> 1. Előadó: Szükségünk van arra, hogy milyen az alábbiakra:
>> Közönség: Írja be a tesztet.
>> 1. Előadó: mi szükség van az alábbiakra: akkor fel kell készülnie
írni, betét, távolítsa el, és keresni láncolt listák a tesztet.
Ez olyasmi, amit számíthattak, hogy nem.
Csak menjen rajta.
Ha bármilyen kérdése van a kódot, lőni a TF egy e-mailt,
jöjjön munkaidőben.
Még mindig sok időt tanulni, hogy ne aggódjon.
Rendben, minden más kérdései láncolt listák?
Igen.
>> Közönség: Tehát, ha nem használja a pointer menni a másikat a jobb
Mielőtt használja a mutatót Az egyik a bal oldalon, az
egyenértékű törlése mindent, ugye?
1. Előadó: Igen.
Közönség: [hallható].
1. Előadó: Jobb, hiszen nem lehet értem, ez valójában még rosszabb.
Mert nem csak hogy nem tudom hol van, mi már nem használja,
de we've-- nem vagyunk felszabadítja az emlék már.
Tehát csak lógott, és nem hasznos lehet, mert nem tudjuk megtalálni.
Igen, jó kérdés.
>> Rendben, beszéljünk stack.
Láttuk halom nagyon gyorsan.
Ők először tavaly ki adatszerkezeteket.
Szóval azt hiszem, a stack Annenberg A tálcák ahol verem dolgokat a tetején.
És ha meg akarsz gyere egy tálcát, te
Mindig megy, hogy az egyik a top, amely a leginkább recently--
ami a dolog, amit a leginkább Nemrég fel a tetején a verem.
Szóval lehet egyfajta gondolom, ennek a fajta vizuális ha te gondolsz stack.
És akkor, most már beugrott valami le a tetején a verem.
>> Ha are-- Ja, és a szó, hogy használni, amikor beszélünk ezeket az adatokat
szerkezetek általában, ha tenni valamit a veremben,
azt mondjuk, mi nyomja a veremben.
És ha vesszük valamit a verem, mondjuk mi leugrás a köteget.
Ha meg akarsz végrehajtani Egy stack-- amely határozottan
Javasoljuk, hogy próbálja out-- te szeretne majd nyomon követni,
mondjuk, amit használ egy tömb.
Tudom, az előadás beszélgettünk használatával mind a tömbök
vagy láncolt listák hogy végre egy verem.
Ha használ tömb, meg kell keep--
mentség me-- meg kell nyomon követni A mérete és a kapacitást.
Tehát a maximális számát hogy a verem fér.
Kérdések a raktárban
>> Közönség: Mi a különbség a méret és a kapacitás?
1. Előadó: A különbség mérete és kapacitása, félelmetes kérdést.
Tehát mondjuk mi vagyunk egy mezőhöz, és mi
kiosztani elég hely a 10 egészek.
És kezdjük, hogy töltse fel, hogy.
És mi nyomja a dolgokat, és mi pop dolgokat ki.
Azt akarjuk, hogy nyomon követhesse a maximális számú tudjuk tartani, ez kapacitást.
És azt akarjuk, hogy nyomon követhesse a aktuális száma van, hogy a méret.
Jó kérdés.
Bármi más a raktárban
Rendben, beszéljünk mintegy meglepetés, sorban állás.
>> Ellentétben kéményeket, amelyek először a múlt ki, ezek az első, first out.
Tehát ez az általam elvártnál hiszem, egy sorban.
Gondoljunk csak rajthoz áll az Apple Store kap bármilyen termék.
És az első ember a sorban kell az első ember, aki segített.
Tehát az első dolog, ami tolta a ez az első dolog, ami beugrott.
Hűvös?
Nagyon similarly-- ó, a szavakat, hogy használjuk inkább push és pop--
amit csak használni, Én sorry-- azt mondjuk,
ha már üzembe valamit a sorban, azt mondjuk enqueued meg.
Ha elvisszük valamit a sorban, azt mondjuk dequeued.
Azt.
Azt lehet kimondani azokat rossz, de az ötlet.
És akkor megint, mint halom, ha már végrehajtja ezt a tömböt,
meg kell nyomon követni a méret, a kapacitás, és a fejét.
Mit jelent a fejét?
Miért kell tartanunk követni a fejét?
>> Közönség: Mert ez az, ahol az elején a lista.
1. Előadó: Igen, alapvetően a fej ahol kezdetben a várakozási sor.
Mert tudjuk, ellentétben halom, which-- Én fogom próbálni, hogy szembenézzen ezzel way--
Tudjuk, hogy ez mindig megy zsugorodik így, és növekszik ezen a módon.
Sorok, az emberek jönnek rá a végén és hagyja a kezdetektől fogva,
így van, hogy nyomon követhesse hol a kezdet.
Ez mit értek meg kell nyomon követni, ahol a fej.
Hűvös?
Minden rendben.
Nyolc perc, pár több téma, meg tudjuk csinálni.
>> Rendben, hash tábla.
Beszélgettünk nagyon röviden mintegy hash táblák.
A kvíz, akkor csak meg kell megérteni őket magas szinten.
Az alapötlet az, hogy van ez az adat.
És azt akarjuk elérni, hogy az időben ez gyorsabb, mint olyasmi, mint egy kapcsolt
lista.
Mert azt mondta, ha mi voltunk Keresés egy láncolt lista,
amely eltarthat N időt.
Még hozzáférés is igénybe vehet N alkalommal egy láncolt lista.
Hash táblák nekünk egy módja, hogy tudjuk, gyorsabban elérje a dolgokat, és így tovább
Gyorsan keresni dolgokat, anélkül, amelyek a korlátozások tömb
ahol már rögzített mérettel.
>> Úgy gondoljuk, egy adatstruktúra, ahol betette az adatok szerkezete
függ ezen mágikus hash függvény.
Tehát ebben az esetben, a mágikus hash funkció csak vesz egy szó,
ellenőrzése, amit az első levél, és akkor csak válogatás betűrendben.
Tehát lényegében őket különböző vödrök.
Amikor azt látjuk, banán, azt mondjuk, OK, mondjuk a B vödör.
Ha látjuk, hogy az Apple, hadd tedd a vödörbe.
Ha láttunk sárgabarack, hadd tedd a vödörbe.
OKÉ?
>> Tegyük fel, hogy én látszó for-- I Nem tudom, mi van a másik gyümölcsöt?
Tegyük fel, kerestem narancs.
Mit nézzek meg?
Az O vödör.
Igen, már csak egy helyen hogy a narancs lehet, OK?
Szóval azt mondtam korábban, hogy mi történik if-- is azt mondta korábban,
mondjuk tesszük sárgabarack in-- de igazán foglalkozik a tény, hogy, ó, nem,
ha én is fel bogyó, ez fog ütközik banán.
Hol rakjuk, ha van Már valami a táblázatban?
Nos, van egy pár lehetőség.
>> Opció számú lineáris szondázás, ami lényegében azt jelenti,
Tegyük fel, hogy szeretné kipróbálni, hogy tedd bogyó, és látom, ó, nem,
banán már ott, Én csak azt mondom OK, hadd
nézzek a következő rendelkezésre álló helyet.
Szóval sétálni, azt mondom, ó, nincs semmi a D vödör.
Nem igazán tudom mondani olyan gyümölcsök hogy az adott betűvel kezdődik D,
így én csak megy, hogy bogyó van.
Durian.
OK, így mivel ott semmi, mégis,
Én akár azt is csak használja azt a helyet.
Mi az a hátránya, hogy?
>> Közönség: Ez elromlott.
>> 1. Előadó: Sajnáljuk?
Közönség: Ez elromlott.
>> 1. Előadó: Ez out-- Rendben, akkor talán a végén
A dolgok, amelyek nem in-- tárolt gyűjtőzónákba az úton
hogy elvárjuk, hogy legyen.
Tehát, ha kerestek A bogyó, mielőtt azt mondtuk,
ó tudjuk nézni egy vödör.
Ez csak akkor lenne egy vödör.
De most tényleg, ez lehet minden vödrök, ugye?
>> OK, itt egy másik lehetőség, Külön chaining--
amely a gondolat, hogy mi lesz hogy egy kicsit később P készlet 5.
Ahelyett, hogy csak van Egy tér minden vödör,
miért nem a dolgot, minden vödör egy mutató egy láncolt listában?
Ahol azt mondjuk, OK, van egy vödör mindenért, ami kezdődik A.
És ott csak lesz egy kapcsolt listáját gyümölcs kezdetű A.
Tehát ha kapunk egy új gyümölcsöt, mondjuk mi get-- mi avokádó, van alma,
Mondjuk, hogy a sárgabarack, hogyan tesszük a listán?
Nos, hogy kimegyünk a vödör 0, és mi volna csak helyezze azt a mi szeretett listán,
ilyen egyszerű.
>> Most Azt mondogatom vödör.
Mi lehetne végrehajtani ezt számos módon.
Az egyik tipikus módja, hogy ez a fajta kép azt sugallja,
van esetleg épp egy sor mutatókat láncolt listák.
Ez is egy módja tudjuk végre egy hash tábla.
Közönség: szüksége lenne egy másik listán, mert a banán és a bogyós kívül esnek
A rend?
1. Előadó: Megtenné need-- ah, azt
Kell még egy lista, mert banán és bogyós vannak elromlott?
Ebben az esetben, a mi hash függvény, amely azt mondja, hogy hova tegye a dolgokat
nem törődik a második betűt.
Nem érdekel alphabetizing, ez csak törődik az első betű.
Kérdés?
>> Közönség: Mi az a meghatározás, hogy funkciót, és mit néz ez ki?
1. Előadó: Ah, jó.
OK, így nem kell Túl sokat aggódsz erre a kvízt.
Szóval nem hozott a diák.
Fogunk bevezetni hogy ez a P készlet 5.
De alapvetően azt mondja, adott Új elem, ahol is mondjam?
Vagy, mondjuk keresem egy elem, ahol lehet az?
Igen, jó kérdés.
>> OK, nagyon gyorsan, a fák és a próbálkozás.
Szóval egy fa csak bármiféle A szervezett adatok szerkezetét.
És fogunk látni a sok kép hogy fog ez a szuper világos.
És egy Trie, amit láttam az osztályban, Ez egy nagyon különleges fajta fa
hogy lényegében úgy működik, mint többszintű hash tábla.
Ez nagyszerű.
Fogunk látni, hogy mindössze egy percet.
Rendben, szóval beszélni fák először.
Szóval ez tényleg tipikus példája egy fa, ahol van egy hierarchia.
Látod, hogy az egyik a legtetején, ugye?
És elmondhatom, top, mert van egyértelműen rendelési mert
ezeket a nyilak lefelé.
Úgy, hogy a dolog a tetején, Hívom, hogy a gyökér.
Tehát az egyik a gyökér csomópontot.
És a dolgok az alján, aminek semmi jön le őket,
Azt mondják, ezek a levél csomópontok.
Tehát 8,9 5, 6, 7, OK.
És általában a terminológia mondhatok, az 1-3 szülő.
Szóval ez a dolog, hogy jön egy felette, és pont azt.
És 3 1 gyermeke.
Ez az a dolog, hogy 1 pontot.
Kérdés?
>> Közönség: Tud megy vissza Az előző diára, kérem?
>> 1. Előadó: mehetek vissza az előző diára?
Persze.
Kérdések erről?
Vagy csak azt akartam, hogy nézd meg?
Közönség: Csak nem kap rajta.
>> 1. Előadó: OK, hűvös, igen.
Ezek mind online, így nem aggódnia, minden szót.
És az az érdeke, idő, én megyek.
Rendben van?
Fantasztikus.
Oké, rendben.
Szóval beszéljünk egy nagyon különleges kind--
Így áll össze az általános szerkezete a fák,
ami bármit, lehetővé teszi számunkra, hogy milyen rangot dolgokat hierarchikusan.
>> Bináris fák vannak dolgok, ahol minden csomópont legfeljebb két gyermek.
OKÉ?
És azt mondtuk, rendben, hogy úgy tűnik, illeszkedik ez a leírás.
Azt mondta csomópont, nem bináris kereső fa.
Mi az a bináris kereső fa?
Ez rendezve.
Szóval tudom, hogy a bináris kereső fa,
mindent a tree-- mindent A csomópontok bal kisebb,
és mindent a csomópontok jobb nagyobb.
Tehát ez nem egy bináris kereső fa.
Ez csak egy bináris fa.
Tehát van nagy csoportja a fák, valamivel kisebb a kategóriában
A bináris fák, keresés egy-- bináris keresés fák.
Hűvös?
Minden rendben.
>> És most, a legtöbb móka Minden, mi van a próbálkozás.
Srácok látta ezt képet előadás?
Igen, meg kell nézni szuper ismerős.
Nézzük meg, hogyan lehet ténylegesen végrehajtja ezt.
Vagy valóban, lássuk, Ez meg is jön fel?
Dehogy.
Rendben, nem is kell, hogy aggódnia, hogy alacsony szintű cucc.
Mi lesz bőven ideje hogy foglalkozzon akkor P készlet 5.
De most, csak nagyon magas szinten, tudom, hogy ez az, aminek látszik.
Mi jellemezte, mint egyfajta többszintű hash tábla
where-- mit jelent ez a bolt?
Ez eltárolja nevét a tudósok, hogy mi is valójában
keresse meg csak egyfajta követően különböző hash táblák meg, rendben?
>> És a célja ennek az, elméletben, az általuk nyújtott folyamatos időt felnéz.
Tehát ha azt szeretné, hogy ellenőrizze, hogy Például aki someone--
hogy Mandel ebben Trie, tudtam nagyon gyorsan
A linear-- Sajnálom, a konstans időt, kitaláljuk
függetlenül attól, hogy ez a Trie.
De egy con, az nézze meg, hogy milyen nagy is ez.
Nem is vagyunk tárolására, hogy sok adatot, és ez óriási.
Szóval egy nagy con az, hogy használ nagy mennyiségű memóriát.
Igen.
>> Közönség: Miért nem gondoskodik konstans időben, pontosan?
>> 1. Előadó: Még egy időben?
>> Közönség: Mi a megérzés miért ez biztosítja az állandó idő?
>> 1. Előadó: Kitűnő kérdés.
Miért nem biztosít állandó időt?
Szóval, mit tehetünk az, hadd azt mondják keresünk Mandel.
Tudjuk, hogy szeretnénk kezdeni Az első szinten M.
Tudjuk akarjuk követni, hogy E. Tehát ez egy lépést, két lépést, igaz?
Követjük azt N. követjük a D. Követjük azt E. követjük, hogy L.
És akkor a következő dolog, amit ellenőrizni says-- ezt a delta mondja Igen, ez
a mi asztalon.
Ez az egy szó.
Ez egy érvényes bejegyzés a Trie.
Szóval azt mondod, OK, került hét lépésben.
De ha hozzáadjuk, mint egy kismillió több a tudósok, hogy az adatok szerkezete,
akkor nem kell ellenőrizni, Azonkívül, egy csomó dolgot.
Mi csak valaha is van, hogy hét lépésben, a hossza a személy
név.
>> Szóval, szeretjük azt hinni, A futásidejű mint tegyük fel,
növeljük a mérete a adatszerkezet, meddig
ez fog tartani?
Ebben az esetben, ha hozzátesszük egy csomó több tudós, ez nem számít.
Ez még mindig tart, hogy az azonos ideig.
Ez folyamatos időben.
Igen.
>> Közönség: Honnan tudod, hogy nem szkennelni mint a többi számot?
1. Előadó: Honnan tudom, hogy milyen az alábbiakra:
Közönség: Mint honnan tudod, mész egyenesen M E és nem az M az A?
1. Előadó: Ó, persze.
Mivel tudtam, hogy keresi a szót Mandel,
és én csak tudom, hogy az M-E. Szóval hogy-- igen, megy előre.
Közönség: Nem van hogy nézd meg a többi betű
a többi a [nem hallható]?
>> 1. Előadó: Ah, nem én nézni the-- OK, nagyszerű.
Ez egy nagy kérdés.
Attól függ, hogyan hajtják végre.
Ha végrehajtására, mert csak mint egy sor tömbök
ahol tudjuk, hogy az E Mindig a pozíció 0,
Nem tudom, bármi számú index címen.
Igen, mi csak Konstans ideje, ne, ne, ne tegye.
Hűvös.
Kérdés ott?
>> Közönség: állandó idő ugyanaz, mint a valós időben?
1. Előadó: állandó idő ugyanaz a dolog valós időben?
Nem vagyok egészen biztos benne, valós időben.
Közönség: Mint alkalom, hogy Szó szerint halad a második
a második, ahelyett, hogy független változó.
>> 1. Előadó: Ó, igen, lehet gondolni, hogy ez így.
Más szóval, ez nem függ a mérete az adatok szerkezetét.
Ez egy módja annak, hogy belegondolok.
Más kérdés?
Talán az első alkalommal történelmünk, kész időben.
Ha bármilyen kérdésed van, nyugodtan szabadon jönnek kérni minket, menj a rész,
beszéljen a TF, irodai óra között 8:00 és 08:30
11:00 hétfőn és kedden, így ez egy kicsit más alkalommal,
ügyeljen arra, hogy vegye figyelembe, hogy.
Igen.
>> Közönség: Szükségünk van tudni ilyesmi parancssori
dash ls, kötőjel bármi?
>> 1. Előadó: parancssorból érveket, és a Linux parancsok,
Igen, meg kell tudni ezeket.
Very-- ez olyan, mint az a fajta szinten cucc mi fejezet foglalkozik 0,
amennyire Linux parancsok útközben.
>> Közönség: Vannak órák a Annenberg?
1. Előadó: Munkaidő, nem vagyok teljesen biztos benne, hol vannak.
De akkor ellenőrizze a honlapján, és megmondja neked.