ANDI Peng: Rendben. Üdvözöljük a héten négy szakaszban. Ez egy szép nap itt New Havenben így tényleg azt hiszem, a gyér szóródása gyerekek, csatlakozott hozzám részén ma, köszönöm. Olyan gyorsan, csak mielőtt kezdeni, a napirendet ma. Mi lesz, hogy menjen át a Néhány rövid bejelentéseket. Van egy nagyon szokatlan menetrend jön a következő két hétben vagy úgy így fogunk menni fölé. Másodszor, tudom, mindenki kedvenc topic-- Biztos vagyok benne, ez a megolvadt az agyad során előadást, ne aggódj, Még mindig egyfajta nem értem. Rendben van. Ez egy vicc volt. Igazából nem értem. De én fog arról, hogy srácok értem is. Mi is így fogjuk eltölteni Nagyon, nagyon jó adag időt beszélünk mutatót ma. Mint látható, Candy beszéd hatalmas ma. Mi nagyon fog tartani hogy-- Igen, ez így van. Tartsa figyelembe édességet. Megyek át őket körül most. Semmi gond. Fogunk igazán kipróbálni hogy az emberek vércukorszintjét fel, mert ez az agy fog égni némi oxigént ma, mert a mutatók nagyon, nagyon nehéz. Akkor fogunk beszélni memória kezelése milyen is ugyanabban a birodalomban. És fogunk lépni tovább átirányítás és a fájl I / O melyek csak szintaktikai, szép dolog, hogy meg kell beszélni. És akkor végül, én vagyok lesz, hogy ismét megpróbálja elhagyni, mint 10, 15 percnyi pset4. Ez miatt néhány nap alatt így vagyunk fog igazán fajta kapsz néhány hasznos tippet, ha Már elindult rajta. Hűvös. OKÉ. Szóval néhány közleményei Ennek következő hétre. Osztályozás. Igazából nem tudom, Ezen a ponton, hogy sokan közületek srácok tényleg az én section-- akkor OK? OKÉ. De azok számára, akik az én részén, Csak pár kommentálja osztályozás. Először is, nagyon jó munkát kommentálva. Azok, akik nem megjegyzést, akkor tudom, kik vagytok, mert akkor valószínűleg Van néhány stílus pont dinged ezen a héten. Csak győződjön meg arról, hogy az összes programok hozzá egy pár hozzászólás. Tényleg, a stílus nagyon könnyű kap megfelelő pontot hatálya. Tehát nekünk, csak hogy arról, hogy te ilyen hozzá egy rövid leírást minden A programok mit csinálsz. Secondly-- ez egy hatalmas kérdés sok a TA az elmúlt week-- úgyhogy győződjön meg róla, hogy feltöltéshez a megfelelő mappába a helyes nevű program. És hogy miért is kér ez mert mi, a kurzus az osztályozás, valóban futtatni egy szkriptet a kód, amely letölti automatikusan az összes psets, fut helyességét vizsgálatokat mindet, majd feltölti a pontjaid közvetlenül a Gradebook. Azonban, bármely ponton, ha elemzi a programot nem megfelelően, ez csavarok fel az egész program mindenki számára. És igen, jogosan, ez a gyönyörű script hogy is írtam, hogy nem Mindez számunkra, teljesen összeomlik, ha nincs Ön nevű program helyesen. Szóval csak feltölteni a helyes mappát, állíttassák nevű helyesen, majd az élet jó. Kapok a psets vissza a srácok korábban mert kapok fokozatúra őket gyorsan. Igen. OKÉ. És azt is meg fogjuk beszélni about-- Yale van egy nagyon, nagyon szokatlan menetrend az elkövetkezendő két hétben. Tehát azok a srácok a Harvard, ez nem vonatkozik. De számunkra kedves gyerekek a Yale van úgynevezett bukása break-- sajnálom, Harvard-- ahol van Öt nap szünet az iskola. S amíg ez a szép, hogy fajta elrontja a PSET ritmust mert psets miatt, csütörtökön, pénteken. És így, ha nem azért vagyunk itt Csütörtök, péntek, akkor Nem lehet munkát srácok miatt csütörtökön, pénteken. Szóval, mit fogunk csinálni is-- vagyunk mint 99% -ban biztos ez, mi történik, előfordulhat, hogy néhány megváltoztatni, de azt hiszem, subtle-- van megyünk have-- ezen a héten normális. Tehát van a szakaszt Kedden majd munkaidőn az egész a többi a hét majd pset4 esedékes pénteken. Aztán, ahogy ti mindannyian tudjuk, a Emlékeztettem srácok a múlt héten, Megvan a kvíz 0 jön szerdán. És így, hogy egy diák magam, Tudom, hogy nagyon kevés az akkor srácok valóban dolgozni pset5 a két nappal korábban a kvíz. Szóval mi megyünk talán a végén csinál, az, hogy hétfő este, megyünk hogy valóban, 5:30-07:00, Van egy rövid áttekintés ülésén megvitatott témákról. Nem tisztázott, hogy ez egy felülvizsgálja ülésen, vagy egy Q & A. Ez lesz valamiféle felülvizsgálat milyen formában fogjuk fedezni Néhány téma szempontjából releváns a srácok. És akkor hétfőn és kedden éjszaka E héten 8:00-11:00, megyünk, hogy munkaidőben. Azok munkaidőn lesz a legtöbb valószínűleg inkább csak jönnek, kérdezze TA kapcsolatos kérdéseire minden koncepciók te zavaros, és akkor ilyen menjen át veled és felülvizsgálat koncepciók a kvíz. Kvíz 0, ha a Hétfőn, szerdán részén, lesz szerdai alatt class-- szerdán az órákon. És akkor, ha a Kedd, csütörtök részén, lesz is az órákon csütörtökön. Nem igazán lehet választani melyiket menni. Ha egy hétfőn, szerdán, Önnek kell menni szerdán. Ha kedd, csütörtök Önnek kell menni csütörtökön. De aztán aznap éjjel, számunkra kedves személyzet, majd Van egy óriási kvíz osztályozási párt amit kapsz a pontjaid vissza hozzád Aznap este. Mikor? Tisztázatlan, ki tudja, de ez lehet, válaszolunk 24 órán belül úgy, hogy a srácok remélhetőleg Van valami visszajelzést péntekre. És akkor van egy nagyon szokatlan héten. Tehát pset5 egyike a legnehezebb psets az év. Szóval sajnálom srácok. Mit fogunk próbálja tennie, hogy megyünk, hogy Néhány konkrét támogatási azon a hétvégén. Mert, ahogy ti is látni, a PSET annak köszönhető, mielőtt ősszel szünetet. Nincs támogatás srácok ősszel szünet és így tényleg ilyen szeretné kifejezésre ezt, essünk túl rajta, működj nagyon, nagyon nehéz Ezek a következő két hétben, hogy ezt a kvízt és ezt a két psets történik majd nektek egy szép pihentető hét nap gondolkodás nélkül CS. Tehát ahhoz, hogy a megtörténjen, valószínűleg fog mozgatni a szakaszt hogy vasárnap délután. Ez lesz forgatták, így nem gondjait, ha nem tudsz jönni. De az online forgatás lesz ott lenni, és hozzáférhetővé úgy, hogy a srácok, vasárnap Hétfő, kedd, dolgozni pset5. És akkor ez ősszel törni, és nem CS majd jövünk vissza és vissza a grind. De ez lesz a szép héten őszi szünet és mi nagyon szeretnénk, hogy ez a stressz mindenki számára ingyenes, a lehető amely Ezért költözött a PSET annak tudható mielőtt ősszel szünet helyett után. Mert it's-- Úgy értem, valahogy úgy érzi, tetszik legyőzi a célból, hogy A határidő után ősszel szünetet, ha van nem támogatja egyébként ősszel szünetet. Szóval azt hiszem rather-- Inkább összpontosítani most. Van valakinek kérdése erről menetrend? Bármi zavaros? Igen. Közönség: Van-e még előadást a 21.? ANDI Peng: Igen. Így a 21., ott lesz egy előadás, amely élő, a Harvardon. Én nem tudom, hogy David forgatás , vagy ha ő valóban előadást, de lesz elérhető Online srácok a hozzáférést. Szóval csak győződjön meg róla faragni egy órás valahol őszi szünetben Szóval ti lehet fogni fel, hogy az előadás. Igen? Közönség: Igen. Bocsánat. Jöttem egy couple-- ANDI Peng: Semmi gond. Tessék, itt egy kis édesség. Közönség: Hé, elkaptam ezt. Tehát csak Összegezve, nem holnap, hanem a Szerda után, van egy kvíz. ANDI Peng: Helyes. Közönség: És ez lesz be-- mi a formátum a kvíz? ANDI Peng: Ó. Szóval mi küldünk egy e-mailt, hogy kiterjed minden, hogy mélyebben. De lényegében ez éppen fedezi alapvető témaköreit már lefedett az első félévben a félév. Mi lesz felülvizsgálati ülések és kérdés és válaszok így nem aggódik, hogy. De megyünk át, hogy túl. Közönség: Vajon lesz, mi hogy a számítógépek és a kód there-- ANDI Peng: Nem. Ez lesz a srácok írásban és kérdések megválaszolása kézzel. Közönség: Ó. ANDI Peng: Szóval odaadjuk out gyakorlatok és a cucc Szóval ti érdemes talán menni vissza, és átírni Mario kézzel csak győződjön meg róla, a srácok egy ötlet, hogyan kell csinálni. Mert néha, amikor írsz kézzel Önnek felejtsd pontosvessző és a cucc és ez nagyon rossz. Közönség: Nem lehet, hogy [hallhatatlan]? Mint, kapsz pontosvessző a your-- ANDI Peng: Igen és nem. Beszélni fogunk mélyebben kapcsolatban, hogy a kvíz elrendezés és hogyan fogunk fokozat. De alapvetően, csak tudom, hogy a általános formátuma lesz neked srácok sem tolmácsolási code-- megválaszolása alapvető kérdésekre. Ha én kérdeztem, hogy mi az a könyvtár? Srácok tudnia kell, mi a Könyvtár, és írd le. Vagy mondhatnám, írni egy programot, kiírja Hello World a képernyőn. Srácok írna, int main void printf hello world pontosvessző. Igen. Közönség: Szóval ez nem fog hogy bárhol lehet [hallhatatlan] nehézségi szint a probléma beállítani? ANDI Peng: Nem. Nem. Mi won't-- igen. Írja meg teljes egészében a játék 15, 20 perc, menjen. Nem, ez nem lesz olyan. Nem. Közönség: OK. Annak érdekében, hogy a szerda. Ezen a héten is még a legnehezebb probléma beállítani? ANDI Peng: Nem. Szóval a probléma állítsa miatt előtti napon esik szünet. A schedule-- az e-mail valójában küld ki 20 perce kapcsolatos mindezt. Szóval ti egyszerűen csak ellenőrizheti e-mailjeit. Ott leszek. Igen. Semmi gond. Hűvös. Bármilyen általános kérdései bejelentések, osztályozás, vetélkedők, mielőtt merülés jobbra mutatókat, amelyek fogyaszt A többség a mi oldalunkon idő ma? Hűvös. Minden rendben. Tehát ugye srácok nézni ezt lovely-- Nem tudom, hogy így hívják. A dolog, ahol a claymation fújta fel magát, mert nem használja a mutatót rendesen. Nos, a program fog Valószínűleg felrobbantani magát, ha ne használja mutatók helyes is. Mi is így fogjuk tenni arról, hogy nem történik meg. Ma megyünk némi mutató móka. Én megyek át a dolgokat olyan gördülékenyen, mint azt hiszem, lehetséges egy olyan kis időkeretben. De csak annyira, hogy fedezze hogy én tényleg akarom srácok, ha valamit nem értesz, hogy nem csak hadd folytassam. Mert ha nem, megérteni valamit, akkor valószínűleg nem fog érteni semmit mondom után. Ezért kérjük megállítani, és feltenni egy kérdést. Mert mindenféle hógolyókat össze. Mint, pointerek vezetnek be memória ólom más dolog. És így, ha nem érted mutatók, megállítani, és mi majd kitalálom és az élet minden rendben lesz. Hűvös. Szóval hány srácok előadás, amikor David említett mutatók, az agyadat fajta vált zselét? Igen. Jó. Megyünk, hogy megpróbálja de-zselét az agyadat ma. Fogunk igazán szisztematikusan menjen át, hogy pontosan mi a mutató, mit csinál, és hogyan használjuk őket. Tehát minden pointers-- így általában a változók korábban használt a kódolás, mint a változók, mint egész számok vagy szövegek vagy úszik, ezek mind lényegében érték a számukra kijelölt valamint egy címet rámutatva, hogy ezt az értéket. Így fogok felhívni ezt most. Jelenleg szinte nincs kréta de ez rendben van. Így például, rendszerint az utat, amin használ változók hozunk létre a neve típusú változó, hadd csak azt mondom. Tehát itt megvan int x, és mi vagyunk inicializálása, hogy int 50. Tehát itt ebben a blokkban a memória a mi számítógépek általunk tárolt több 50. Szóval, ha a mutatók jöhet számításba a hogy a számítógép itself-- tetszik, itt, fizikailag a merevlemezen A RAM az én computer-- csak véges mennyiségű memóriát. Nem lehet csak tartani tárolására dolgokat a helyzet magaslatán a helyzet magaslatán és mindet. Tehát az is, hogy mi dinamikusan oszt memória képes tárolni, amit akarunk és hozzá, van azzal, mutatók. Így elképzelhető, a memória, a jobb. Ha ez a RAM a számítógépen, akkor ezek a kis bit vagy blokkok vagy byte memória which-- ezek csak kis blokkon osztottak ki A merevlemez vagy a RAM a számítógép, és egyes fenti blokkok tárolhat különböző dolog. Így például, az egyik tömb ebben a példában itt az egyik bájt, amely amely nyolc bit. A szám függően változik operációs rendszer a számítógép. Például, hogy hány van Hallottál 32 bites versus 64 bites operációs rendszerek? Pontosan. Tehát minden, ami mondván az, hogy a memory-- hogy az út, hogy a számítógép kezeli a memória különböző. Ezért van az, hogy tényleg Fontos, hogy megértsük Ezért memória magát funkciók helyett mint figyelni a számokat. Tehát nem igazán érdekel milyen nagy ez a tömb van, már csak be kell törődnünk milyen nagy van szükségünk egy int, hogy, milyen nagy Szükség van egy húr hogy milyen nagy egy mutató? OKÉ. Szóval ez lesz a sok A nehéz, sűrű információkat. Én adok nektek egy pár komikus pillanatok itt. Srácok számára lehetővé kell megérteni ezt most. Mert tudjuk, hogy pointerek címek, és ezek különböznek a változók. OKÉ. Hűvös. CS viccek a legjobb, igaz? Tehát az is, hogy megyünk létrehozásáról a mutatót Ez egy nagyon különleges fajta szintaxis. Mint, hogy bármilyen típusú változó, ez lesz egy specifikus mondattani használjuk létrehozni. Tehát amikor kijelentette minden pointer, egy mutató mindössze essentially-- Azt hiszem, fontos része mutatók is hogy míg a változónak Mindkét érték és egy címet, egy mutató egy címet. Ennek értéke egy címet. Szóval ez egy cím tárolt egy másik címen. Ha ez nincs értelme. Átnézzük ezt részletesebben, de ez az általános formája A why-- hogyan nyomtató tárolja. Tehát az is, hogy hozzon létre egy mutatót a csinálás bármilyen típusú adat hogy a mutató megy hogy referenciái és then-- a star-- majd A nevét a mutatót. Tehát itt, ha akarnánk hogy hozzon létre egy mutatót, amely felé mutatott egy egész szám, és mi akarta, hogy a nevét a mutatót, hogy x, tennénk int csillagos x. Igen? Közönség: És így, ha A következő sorban do int x, majd az int csillagos x jelzi a helyét az x te meghatározó utána? ANDI Peng: nagyon jó kérdés. Átnézzük ezt Pár csúszik később. Igen. Aztán ugyanezt char és ugyanaz a dolog lebeg. Csak tudom, hogy ezen a ponton létrehoztunk egy mutatót, mi nem ténylegesen beállítva egyenrangúvá tette még semmit. Mi valójában nem hivatkozott rá. Ugyanezt itt, amikor létrehoz egy változót, Ön erről a változó nevét, mi még nem próbáltuk meg egy értéket is. Ugyanezt itt. OKÉ. Szóval hogyan lehet beállítani értékeket mutató? Ez a referenciái és dereferencing. Tehát az is, hogy mi lehet hivatkozni Egy varia-- egy mutató, lényegében visszatérünk a cím memóriában amelyek egy változó van tárolva. Tehát ha volt egy pointer-- fogom felhívni ez egyszer eljutunk a következő dia, de csak tudom, hogy lényegében A és-- a jelet és a változó-- minden nem is mondom a címet hol valami tárolják. És dereferencing az ellenkezője Az, hogy, ami csak a csillag. A csillag csak ad a tényleges tárolt adatokat arra a címre. Tehát az egyik megadja a címét tároltuk egy címet, a másik ad a tényleges tárolt értéket címen. Tehát ők ketten adnak Ön különböző dolog. Ismét a diák összes online így nem gond ha a srácok nem lehet másolni ezt le időben. Szóval vessünk egy pillantást Ebben a példában itt. Tehát van egy óriási memória tömb itt, ugye? Ahol már csak blokkok memória, vagy bájt memóriát, ahol tudunk tárolni különböző dolgokat. Mondjuk úgy, hogy ezek a cím mutat a memóriában. Szóval, amikor csak van - lásd a 0x, Az összes, hogy azt mondja ki, hogy ez egy hexadecimális számjegy. Ahogy ti mindannyian tudjuk, számok épülhetne különböző bázisok. Base 10 hogyan jellemzően értelmezni a számokat. Van még 2 alap, ami a bináris. És ebben az esetben, hexadecimális számrendszer 16. Ez csak egy másik módja mondván nulláról 10-- vagy nullától kilencig és akkor is az A, B, C, D, E, F. Is említést különböző számokat. Dávid ment át ezt az előadást röviden. Ha a srácok zavaros, csak a Google azt. Ott tényleg egyszerű módon tanulni mi hexadecimális számjegy. Minden, ami igazán fontos most az Ön számára srácok, hogy tudom, hogy egy hexadecimális C azt mondja, hogy jellemzően you-- azt mondja, hogy ez egy mutató. Vagy ez egy címet. Tehát ebben a példában, int x = 5. Hozunk létre egy integer-- bocs, egy változó típusú egész és mi inicializálnunk 5. Tehát itt a memóriakártyát, tudjuk látni, hogy x címen 0x0 és azt az értéket, akkor már tárolt belsejében ez 5. Hogy kell értelme mindenkinek, ugye? OKÉ. És akkor mit tettünk A második sor kódot az, hogy általunk létrehozott egy mutató int típusú. Ez az, amit az int csillagos mutató csinál. És ez megegyezik a jelet x van megadva a címét valamit. Tehát az x címét a ez a példa 0x0. És így, hogy a címet a spamrobotok tárolt, hogy a mutató. Van ennek értelme mindenki? Így gondolok this-- gondolni pointers-- itt a Yale van egy postafiók rendszer ahol minden diák rendelkezik egy levelező címet, ahol lehet menni a pincébe a LW és akkor is csak megy és megragad amire csak szükséged van az adott címet. Ugyanez történik itt egy számítógép. Akkor ezek a memória byte-ok tárolhat információt, de ahhoz, hogy tudja, melyik darab információ egyeznek meg, hogy mit akarsz találni és ahol szükség van egy mutatót, amely megmondja, hogyan kell odamenni. Így például nekem, én postafiók, Van egy konkrét ötjegyű számot. Ez a címem. Szóval fizikailag megy a memória, Azt nézd meg a címet, Mehetek, hogy postafiók és hozzáférhetnek az adatokhoz benne. Van ennek értelme Mindenki A számítógép lényegében csinál pontosan ugyanaz a dolog. Tehát az összes mutatót tesz, hogy ez csak létre memória és a memóriája adatok valójában A címe valami mást. Akkor lehet menni, és úgy találják, hogy. Mindenki jó? Mindenki jó nekem eddig? OKÉ. Hűvös. Minden rendben. Tehát majdnem ugyanaz, mint korábban. Tehát van, egyrészt a változó nevű x amelyben case-- Megyek változtatni ezt az értéket 5. Mondjuk úgy, hogy a cím E memóriában 0x0. 00. Nagy. Tehát, a mi a második kódsort vagyunk létre fog hozni egy mutatót nevű ptr mutatóval. És a címe, hogy hadd csak annyit, hogy ez 0x01 memóriában. És valóban akar store-- a jelet x megadja a címét, amit X-et. És az x címét volt 0x00. Tehát ez a mutató most valójában a cím tároljuk az értékét annak, amit X-et. Mindenki velem eddig? Hűvös. És akkor, a módon, hogy mi lenne másolni, hogy az, ha szeretnénk nyilvánítja és alapértéket Egy másik blokk memória int típusú. Jobb? Ez lenne egy int. Ez lenne az úgynevezett példányát. És fogsz get-- így A csillag mutatót ad a tényleges adatok az adott címet. A jelet ad a címét, A csillag ad az adatokat. Tehát az adatok mutatót. Ez a mutató mutat 5. És így ez a funkció here-- a csillag pointer-- megy, kap mindent, ami az Ebben a blokkban, és eltárolja itt. Mindenki tisztában, hogy történhetett? Tehát a két szolgáltató joga there-- A jelet és a star-- Csak nem a különböző dolgokat ha használják a mutatók. Az egyik kapja meg a címet, egy érheti el a tényleges érték. Úgyhogy győződjön meg róla, ha a srácok kódolás, hogy ne keverje össze a két mert ők teljesen más. Itt van egy szép példája a 0x01. Ez egy igazán szép Néhány emlékezni. A számítógép tényleges fogsz is egy hatalmas seggét szám, ami valamit hogy ez nem szép, nem túl kellemes. Ez lesz némi szemetet értéket. És ez így megy, hogy valóban, Tényleg összezavar a programokat. Ez nagyon fontos, Most, hogy van A fundamentumok le why-- mint, ami fizikailag történik, amikor futsz azok kód blokkokat. Everyone-- igen? Közönség: Szóval int x = int példányt? ANDI Peng: Nem, mert ebben az esetben, int X- értéke X- = 5, ugye? És akkor int copy = 5. Tehát például, ha azokat azonosítani kell egymást, mert ők egészek, Igen, ők értékelik, hogy igaz. De mintha húrok a memóriában, mint a Az egyik, hogy Dávid tett során például ez más, mert ők hivatkozva címét helyen emlékére és ők felelnének meg hamis. Tehát itt lenne igaz, mert te hasonlították össze values-- integers-- de a többiben te referenciái pont. Mivel a karakterlánc egy tömbben, és all-- fogunk beszélni, ez later-- de tömb lényegében csak egy mutató egy csomó karakter a memóriában. Tehát ezek egy kicsit más. De ebben az esetben, igen, meg tudná csinálni. Közönség: Meg tudod magyarázni A címe példányt? ANDI Peng: Igen. Szóval ez csak-- nem töltött ki egy értéket de ez csak néhány véletlenszerű más szemetet értéke, hogy nem érdekel. Mert ha egyszer elkezd programot rájössz, hogy mi valójában nem Tényleg érdekel, mi az aktuális címek, csak azt kell tudni, mi a címeket. Igen. Közönség: A csillag melletti int a második sor, az más than-- ANDI Peng: Igen. Közönség: --A dereferencing és hivatkozzon az új csillag? ANDI Peng: Igen. Így a szerzők C-- aki úgy döntött, hogy írjon a nyelvet C-- nem volt túl okos. Nem voltak nagyon okos próbál hogy kitaláljuk, miért kell ezt csinálni. Ha én voltam, én biztosan használni a két különböző karakter. De úgy döntött, hogy ugyanaz. Tehát a csillag után int, hogy elmondja a számítógép hogy te arról, hogy hozzon létre egy mutató. De ha akarsz hivatkozás feloldási something-- más szóval, megy a címet, és húzza az adatokat a somewhere-- a csillag használják másképp. Szóval ti egyszerűen csak legyen óvatos Nem Messiás a két használ. Hűvös. Igen? Közönség: Tehát csak megismételni, hogy győződjön meg arról, hogy én vagyok following-- ANDI Peng: Teljesen rendben. Közönség: --Vizes a bal oldali azt a diát, mi egy dolog, hogy tudjuk. Kijelentjük egész szám [Hallható], amely egyenlő 5. ANDI Peng: Igen. Közönség: Igen. És akkor mi van egy int csillagos dolog, és amely azt mondja, hogy rendben van, olyan, mint mi kijelentette egész, most mi nyilvánító mutatót. ANDI Peng: helyesen. Helyes. Közönség: Jobb? És mi mutató PTR. ANDI Peng: Ja. A név a mutató PTR. Pointer. Közönség: És akkor megegyezik NX, hogy csak azt mondja C hogy hozzá akar férni az érték egész X- azt az értéket, egész x jelöltek. ANDI Peng: Legyen óvatos, mert jelet x ténylegesen mondja you-- a számítógépen, amit akar húzni a címe, amit az x. Szóval jelet ad a címét, csillag ad az értéket. Közönség: Ezért szeretnénk a címet. Mondjuk x volt at-- ANDI Peng: Igazából tudom, mi az x, ugye? Mert tudjuk, hogy x was-- vagyok hogy ezt fel, de mondjuk úgy, önkényesen, ez volt 0x00. Jobb? Tehát tudjuk, hogy a cím 0x00, és így amikor megyünk és jeleket x, Tudjuk, hogy ez értékelnie kell a 0x00. Ezért van, hogy a tárolt az érték a mi mutatót. Ennek van értelme? Közönség: Igen. És példányt megy hivatkozás feloldási ptr-- ANDI Peng: Jobb. Közönség: --which van egy mutatót, hogy már kijelentette, hogy elmondja a címét, az egész x. ANDI Peng: Igen. Közönség: És ebben Egy esetben csillagos ptr egyenlő az x értékét, ami egyenlő 5. ANDI Peng: Helyes. Közönség: Cool. És ez egy egyszerűbb módja annak, hogy hogy vagy az, hogy az egyetlen way-- ANDI Peng: Szóval most ez nem tűnik túl logikusnak számunkra tölteni az összes ezúttal csinál ez a szuper bonyolult dolog, ha Minden tettünk az Készítünk két egészek, melynek értéke 5, ugye? Ennek nincs értelme. De ha egyszer megyünk át memóriafoglalási és-- fogunk megy át, miért lehet praktikus és hasznos a későbbiekben. Bízz bennem, amikor azt mondom, hogy ne csak létre ezek tetszőleges funkciókat az Ön számára srácok megtanulni, mert mi vagyunk próbál bajuk. Itt tulajdonképpen használja az összes ilyen dolgokat, és fogunk beszélni velük. Közönség: Félelmetes. ANDI Peng: Igen. Közönség: [hallható]. ANDI Peng: Jó kérdés. Közönség: [hallható]. ANDI Peng: Ez nem. Ez tényleg nem. Közönség: --two változók hogy is egyenlők [hallhatatlan]. OKÉ. ANDI Peng: Igen. OKÉ. Mielőtt továbblépni, mindenki tiszta? Tudom, Taylor, van egy kicsit későn. Oké. Ez az interneten. Majd nézni az első 20 perc, és máris minden jó. OKÉ. Hűvös. Minden rendben. Tehát ez lényegében egyfajta hasonló dolog, amit csináltál. Ez csak egy grafikus formában. Ha úgy döntesz, hogy nyomon követni, mi most történt, int x = 5, Minden tettünk ezen a ponton hozzon létre egy x nevű változó int típusú. Megyünk tárolni értéke 5 belsejébe. Nincs mutatót, mert mi nem valóban létre egy mutató még, ugye? És akkor a következő vonal, int csillagos mutató, ez az, ahol mi vagyunk valójában fizikailag létre a mutató és mi beállítás, eléri vagy hivatkozás a mutató, a jelet x. Melyik az, ahol bárhol memória ezt történetesen. Én valójában nem zavarja, alkotó érték ebben az időben. De ebben az esetben, hogy a pont akkor lenne egyenlő. És akkor ott lent, a csillag mutatót a dereferencing. Ez az, ahol mi vagyunk húzza az információkat. Tehát ez az érték az x valójában lesz egyenlő 35. Tehát ezen a ponton, most már lényegében Csak újrainicializálni x 35 anélkül, hogy ténylegesen megható x. Csak a mutatót amit mutat x, mi is valójában a változás, amit x volt. Megyek, hogy dolgozzon ki ezt is. Tehát itt hoztuk létre néhány véletlenszerű címét. Mondjuk úgy, 0x00 újra. Mondjuk úgy, hogy a cím. És mi hoztunk létre egy egész szám elemzi x és az értéket, amit hozzárendelt 5. A második sorban, int pointer-- így most mi már Van ez a második dolog, Itt hívjuk pointer-- és megyünk az alábbiakra: mondjuk, ez valami más véletlen memória címet. Mi is így fogjuk beállítani ezt egyenlő bármi legyen is az. És ez a mutató megy pont felé, az x értékét És akkor, ha megváltoztatjuk the-- ha nem teszünk csillagos mutatót, hogy fog a értéke a mutató. Ebben az esetben ez lesz a pálya Ez a nyíl át ezt az értéket x és ez meg fog változni ez a 35. Hatékonyan, csak megváltozott x ne érjen x. Keresztül csak hivatkozó mutatók, mehetünk, és változtatni az x értékét. Ennek van értelme? Tehát ily módon, mi is valójában átnevezése és rechange és úja értékek a dolgokat, hogy mi nem valójában, hogy mi magunk. Van ennek értelme mindenki? Hűvös. OKÉ. Tehát komplex grafikai itt. Menjünk sorban. Lényegében csak nem a pontos ugyanaz a dolog, hogy én csináltam. Mielőtt továbblépni, én Nagyon szeretnék csak, hogy biztos mindenki nagyon világosan fogalmaz. Tehát itt, a kód, hogy van az, int egy egyenlő 3, B értéke 4, c = 5. Így hoztuk létre három egész szám elemzi a, b és c, amelyek egyenlő 3, 4. és 5.. És akkor mi hozzuk létre a három mutató Ezen a ponton, hogy minden egyes ilyen változók. És most megyünk hogy menjen át lényegében mi történik, ha használja őket. Tehát felhívni őket. Vegyünk egy lapot a paper-- én nem tudom, ha ti mind papír, de azoknak, akik nem, talán hitelt azoknak, akik nem. Vegye papírlap és menj sorról sorra. És minden végrehajtott művelet, Azt akarom srácok, hogy valóban kiírja mi az a, b és c ezen a ponton. És mi a címeket, mik a mutatók, hogy pont az a, b és c ezen a ponton? És akkor remélhetőleg ez majd a lépést a srácok keresztül, hogyan kell gondolkodni mutatók. Nem fogunk menni végig őket. Talán adok five-- mint három perc. Kezdje el az első néhány. Ó. Hoppá. Közönség: A második sorban, miért nem a csillag [hallhatatlan] változó? ANDI Peng: Emlékszel a üzemeltetők, az első héten, beszélgettünk, hogyan ha nem, plusz az egyenlők, hogy csak olyan felér egy plusz c. Ebben case-- így ez egy másik módja, amelyben a csillag lehetne használni. Amellett, hogy hivatkozás és kijelentette mutatók, emlékezni, hogy ez is azt jelenti, szorzás. Tehát ebben az esetben, hogy az imént egy egyenlő egy alkalommal c. Ez csak a különböző írásmódja, hogy. Közönség: a valós érték megegyezik egy alkalommal c. ANDI Peng: Igen. Közönség: Mit jelent az, ha azt mondja-jel írni? ANDI Peng: Ampersand úton fogsz hogy-- te megy a helyére a mutató mutatva, és húzza a címet. Szóval jelet ad a címet, csillag ad a tényleges érték van. Közönség: vagyunk építve soronként? ANDI Peng: Te építve sorról sorra. Szóval csak megy egy sort Egy idő és then-- Önnek Nem kell aggódni befejező az egészet. Próbáljuk meg átjutni talán két, három sorban aztán majd összehívja és befejezem. Ez teljesen rendben van, ha a srácok elvesznek. Ez egy nagyon nehéz fogalom. Ha a srácok aggódnak, hogy az osztály hangzik, mint David azt mondta, nem. Elérünk a fogalmi csúcs nehézségi és akkor fog legyen lefelé lejtő. Szóval ti majdnem ott. Van sok édességet kap srácok a púp. Azt hiszem, elég sok bukását követően megtörni leszünk mint a púp és az élet minden rendben lesz megint. Így nem gond egyáltalán. Minden rendben. Adok nektek 20 másodperc, hogy lezárja. OKÉ. Minden rendben. Vessünk egy stab ezt. Ahogy srácok adj választ, Csak megyek, hogy írja be őket. És remélhetőleg we-- tehetném? Igazából nem írja be. Én rajzolni a táblára. Tehát itt, ebben első sorban van egy egyenlő B csillag c. Szintén Elliot hozta létre Nagyon, nagyon jó pont. Mert elfelejtettem, hogy amellett, hogy A kétféle módon tudjuk használni a csillag szimbólum, van valójában egy harmadik utat. Szorzás. És így egyszerűen nem értem zavarodva, mert ez az első módja a sztár. Ez csak mondja a számítógép hogy én vagyok arról, hogy hozzon létre egy mutató. A második út by doing sztárja a mutatót, hogy elmondja a mutató kívánt az adatokhoz való hozzáféréshez meg, hogy a mutató. És aztán, persze, ott van csak egy egyszerű szorzás két szám, amely megmondja, hogy szeretnék, hogy szaporodnak a kettő. Szóval van egy csomó módon tudjuk használni a csillag szimbólum. Ne tévesszen. Csak győződjön meg arról, hogy a srácok értik pontosan mi mind a hárman csináljuk. Tehát ebben az első sorban, A egyenlő B-szor c. Szóval menjünk át mi egy, ami b, mi c? És mi van a mutató egy, a mutatót B és a mutatót c? Mik azok minden ami egyenlő? OKÉ. Tehát elindul egy = 3, b értéke 4, és c = 5, ugye? Így azután, hogy az első sorban, lehet Valaki mondja meg, mi a jelentése? Igen. Nyugodtan csak kiabálni a válaszokat. 20. Jó. Mi b? Közönség: 4. ANDI Peng: Mi c? Közönség: 5. ANDI Peng: Hurrá. Jó. Mik pa, pb, és a pc? Közönség: 000001 és 002? ANDI Peng: Igen. Tehát egyfajta trükkös kérdés de nem azért, mert itt vagyok előhúzott tényleges emlékek. De mivel, példaként, mi nem valójában mit ezek a számok, mi is csak annyit jelet. Én nem is tudom, ha én levonhatjuk-jel. Ez az általam elvártnál, hogyan csinálod? Közönség: mint a rajz egy nyolc. ANDI Peng: Mint egy nyolc. Mint az. OKÉ. Közönség: Bingo. ANDI Peng: megöli. Tehát jelet egy, akkor csak tehetem. Mert valójában nem érdekel, mi az értéke, hogy a van, és ez néhány hosszú ass értéke egyébként, mi használ, csak Giong mondani jelet a. Akkor mi a pb? Közönség: [hallható]. ANDI Peng: Igen. Hűvös. Minden rendben. Egyszerű első sorban. Megvan ez. Pointerek könnyű. Oké. Második sor. És így csillagos megegyezik az azonos dolog, mint azt a valós érték megegyezik egy alkalommal c. Ez csak egy könnyebb út az írás. Tehát mi nem arra törekedjünk, hogy Egy pont vagy itt semmit. Így történik az első sorban. Mi a második sorban miután nem egy valós érték megegyezik egy alkalommal c? Közönség: 100? ANDI Peng: Ez 100. Jó. Mit szólnál b? Közönség: [hallható]. ANDI Peng: Mit szólnál c? Közönség: [hallható]. ANDI Peng: És mi a helyzet a mutatók? Biztos they-- ugyanaz, ugye? OKÉ. Most a harmadik sorban. Kicsit trükkösebb. b egyenlő csillagos pa. Tud valaki mondja meg, első, mit csillagos pa egyenlő? Közönség: Ez az érték ami tárolni. ANDI Peng: Pontosan. És mi az értéke ami tárolni? Közönség: 100. ANDI Peng: OK. Tehát mi lenne a lehet után végrehajtó, hogy kódsort? Közönség: [hallható]. ANDI Peng: Mi van b? Közönség: 100. ANDI Peng: Igen. És akkor minden más nagyjából változatlan, igaz? Mert mi nem nyúltam hozzá. Hűvös. Negyedik sor. Kissé bonyolultabb. Tehát pc-- ismét pc a mutató hogy rámutatott c-- egyenlő pa. Mi a? Közönség: 100. ANDI Peng: Mi b? Közönség: 100. ANDI Peng: Mi a c? Közönség: 5. ANDI Peng: Mi pa? Közönség:-jel egy. ANDI Peng: pb? Közönség: Ampersand b. ANDI Peng: És trükkös, mi a pc most? Közönség:-jel egy. ANDI Peng: Hurrá. Woo Hoo. Látjátok? Ez rendben van. Ez nem is rossz. Jelenleg több édességet, ha ez még nem minden Rendben, de azt hiszem, minden rendben. És mi lesz, hogy menjen át csak egy Több mielőtt megüt a keményebb is. A választ már itt. Lényegében tudjuk, hogy ez mint Math ezen a ponton. Ha egyszerű egyenletek, mint egy plusz b, egy alkalommal c, ez könnyen megoldható. És ha elkezd bővülő után ez, csak menjen műveletek sorrendjét. Ugyanaz, mint korábban. Kövesse nyomon az, ha a csillag mielőtt valami. Hogy megmondja, hogy az értéket. Ha van egy, és mielőtt valamit, azt mondja, a címet. És hozzá kell rendelnie sem mutatók, illetve ezt az értéket. Szóval menjünk át ezt utolsó gyorsan. Nem ez az utolsó, sajnálom. Tulajdonképpen ti is felvenni. Melyiket akartok menni felett ki a fennmaradó három hogy van? Nem hiszem, hogy meg tudjuk csinálni, hogy csak mert nem tudjuk, csak ugrik a sorban. OKÉ. Srácok nem volt más választásom, ez csak a harmadik az utolsó egy. Csillagok pc egyenlő b-szor c. Közönség: Csillagok pb? Közönség: Csillagok pb. ANDI Peng: Sajnáljuk? Közönség: Csillagok pb. ANDI Peng: Csillagok pb. Ó, az én hibám. Csillagok pb egyenlő b-szor c. Én adok nektek 10 másodperc. Csak gyorsan gondolkodni. Ez az, hogy van olyan messze, mi történik azután, hogy végre, hogy az ötödik sorban ott? OKÉ. Mi a? Közönség: 100. ANDI Peng: 100. Mi b most? Közönség: 500. ANDI Peng: Jó. Vajon valaki akarja magyarázni Nekem miért van ez 500? Én nem érzem, valójában soha megérintette b. Hogyan sikerül változtatni a értéke b érintése nélkül b? Igen? Közönség: Mert csillagos pb azt az értéket, pb-- ANDI Peng: Pontosan. Közönség: --which b. ANDI Peng: Pontosan. Tehát itt a mi rajz, a pointer pb valójában mutat ez a jog itt, ami a tényleges fizikai b. És így ha megy, és te csillag pb, ez a következő a nyíl a mutatót és fizikailag változó értékét b. Szóval ezért hoztunk B változott 500, anélkül, hogy megérintené b. És akkor minden mást is a ugyanaz, mert nem nyúltunk, hogy. Ez b. Hűvös. És akkor-- Közönség: Én csak egy kérdésem. ANDI Peng: Igen? Közönség: Mivel we've-- nincs többé jelet c, ez azt jelenti-jel egy átirányítani ugyanezt most? ANDI Peng: Ja. Na-- Közönség: Tehát a nyíl fajta csak mozog és-- ANDI Peng: Szóval essentially-- Közönség: --now nem tudjuk access-- ANDI Peng: --when vagyunk követéssel, c on-- I hamisító. Mi volt ez? A harmadik sorban? Negyedik. Negyedik sor. Minden, amit az volt, lényegében, ezen változtatni nyíl és ez irányába mutattak helyett. Közönség: Tehát nem fér hozzá c többé. ANDI Peng: Ha már ez pontosan szám, akkor hozzáférni. De nem. Nem kell egy mutatót felé mutat c többé. Azt hiszem, ha akart hogy újra elérhető, akkor hozna létre egy másik mutatót, hogy újra rámutatott c vagy másolunk ezt, és rámutatott vissza. Tehát nem, mint most, a három mutatók, egyikük sem mutatnak c. Mindenki jó? Válaszok online. Nyugodtan, szakasz után, menj át Az elmúlt két és vizsgálati magatokat. Ugyanazokat a fogalmakat, csak egy kicsit trükkösebb. Csak kövesse a logikáját Ezért a dolgok különböző dolog. És tipp, pointerek a téma, hogy szeretjük fedezésére a vetélkedők, mert ők fogalmilag nagyon nehéz. Tehát azt javaslom, hogy srácok egész felülvizsgálja ezt a táblázatot vagy perjel hasonló fogalmakat mielőtt a kvíz jövő héten. Közönség: Elnézést. ANDI Peng: Igen? Közönség: [hallható] végleges one-- [hallhatatlan]. ANDI Peng: 50,000? Azt kell, hogy kövesse azt vissza. De somewhere-- azt hiszem, a vonal előtt, akkor létre óriás c érték. c megegyezik ez a hatalmas dolog ami 100-szor 500. Nem. Közönség: [hallható]. ANDI Peng: Igen. 100-szor 100, ami 10.000. Melyik a 10.000. Így hát ott vagytok megszorozzák b és c. Így a mutató, amely rámutat, hogy b-- amely az értéke 500-- alkalommal egy-- Közönség: [hallható]. ANDI Peng: Lehet, hogy baj van. Közönség: Nem, nem, ez nem az. [Hallhatatlan] pointer ac most mutatva egy-- ANDI Peng: Igen. Igaza van. Közönség: --it van annak egy egyenlőségen Egy times-- ez az érték c. ANDI Peng: Tudsz mondani, hogy egy kicsit kicsit hangosabban, hogy mindenki hallja meg? Közönség: Szóval mutató ac utal most már hogy mi a mutató egy használni, hogy pont alábbiakra: és még does-- de rámutatnak ugyanaz a dolog, ami az egy, igaz? Az érték egy azonban ez már az újonnan definiált. És az elején, hogy te kimondásával korábban 100-szor az érték, b, amely 500. És ez az, hogy bármennyire is. 50.000. Ők éppen átcsoportosításával, hogy azzal, amit a memóriát ac is-- a mutatót a C mutat, amely egy. Szóval újradefiniálása, hogy 50.000. ANDI Peng: tehette tanítani a rész számomra. Legközelebb ez mind a tiéd. Itt. Itt inkább édességet erre. Megérdemled édességet erre. Közönség: Én majdnem utolérte, hogy. ANDI Peng: Majdnem elkapta ezt. Rendben van. Igen. De ő pontosan így van. Szóval, mit kell tennie, az hogy-- azt hiszem, követni kell azt a tényt, hogy a mutató most rámutatva, hogy különböző értékeket. Tehát a value-- sajnálom, a mutatójának c repointed egy. És így eltolódott minden kedves számokat. És ezért, amikor belép a ott tárolt értékkel, más a helyzet. Ennek van értelme? OKÉ. Hűvös. Mindenki jó, mielőtt lépni? Közönség: Vajon the-- ha fogsz le a sorok a bal oldali oszlopban, nem az első sorban érinti a második sorban majd a second-- tetszik, ez all-- ANDI Peng: Igen. Így elképzelhető, hogy a kódot, ahol én csak gépelt egy egyenlő B-szor c, egy csillag egyenlő c. Képzeljük csak el, hogy én már csak futott be ezt a kódot és én nem nyomtassa ki, mit mindezen dolgok voltak. Ha én lennék, csak hogy nyomtassa ki az első dolog a tetején, nem lenne itt. Ha ezek után futottam összes ezeket sornyi kódot, mi ezeknek az értékeknek kell lennie a végén az, hogy. Úgyhogy valóban írt egy programot itt. Én még nem kész az összes A szorzás. De csak elképzelni. Tehát itt én csak egy nevű programot mutatók. Megyek nagyít, ha guys-- OK. Úgyhogy létrehozott változókat a, b, c. Már meg őket egyenlő 3, 4, és 5, és már létrehozta a megfelelő mutatók. És akkor itt Megyek kinyomtatni, mi az. Tehát engedik, hogy. Srácok see-- szar. Srácok látni, hogy egy, b és c ezen értékek de a pointerek ez a hatalmas szemetet értéke, hogy nem érdekel? Tehát ha én valóban dugó valamennyi a szorzás majd nyomtassa ki újra az összes ez lenne végre ki hogy mi ez az alján. Tehát, ha akartok játszani körül A fizikailag kódolás, srácok csak csatlakoztassa az összes ilyen a. A kód lesz online, majd a értékeket kell nyomtatni, hogy utána. És akkor látni fogod, hogy a mutató címek ténylegesen újraosztani. Így látni fogod, hogy a címe c valóban lesz hogy megegyezzen amit a címét egy volt. És akkor egyezik bármilyen hogy a nagy szám. Jó kérdés. Mindenki jól van? Még egy utolsó felhívást kérdésekre. OKÉ. Minden rendben. Tehát készüljön, hogy az elméd fújt egy kicsit kicsit. A tömbök valójában csak mutatók. Ez minden vannak. És ne feledd, milyen húrok? Ők is tömböket. Tehát mi húrok tényleg? Olyanok, mint rámutatnak a elején egy char több karakter. Tehát csak koncepciók, hogy indul építeni egymás tetejére. Szóval ez why-- Önnek emlékszem az előadás, David, amikor kellett, hogy összehasonlítás int húr anyuka van valami, majd másik szöveg anya és próbálja, hogy kiegyenlíti a két egymással, kapsz különböző értékeket. Ez azért van, mert húrok önmagukban nem értékeket. Minden ezek a memória címek char-- ezek tömbök karaktereinek és tömbök Íme mutatók. Tehát lényegében, ha Dávid volt comparing-- Helyes, ha törli az összes e? Tehát előadás, amikor David Volt anya egyenlő egyenlő anya, számunkra, hogy úgy tűnik, hogy ugyanaz a dolog. Jobb? De a számítógép alatt a motorháztető, ami valójában történik az, hogy ez a szöveg, minden, ami egy tömb. Egy ampersand-- vagy, sajnálom, egy null terminátort a végén. Jobb? Backslash 0. Rossz eléjük. Szóval mindent were-- összes E két húrok were-- a tömb mérete négykézláb a A leveleket a mama és anya. De mi tömbök tényleg csak mutatók egy adott helyen a memóriában hogy megmondja, hogy indítsa el a tömb. Tehát ebben az esetben, mindez csak néhány szemetet értéket, néhány véletlenszerű mutató. És mindez ben néhány más szemetet értéket. Mondjuk úgy, 0x200. És így, amikor megpróbálja egyenlő őket két egymással, úgy értékeli, hogy hamis, mert A addresses-- a mutatók hogy azok were-- különbözőek voltak. Mivel ez más, ha megpróbálja összehasonlítani a tényleges szám. Mint ha akart compare-- Az elmúlt example-- int a B, ők értékelik igaz, mint mondta Elliot mert ők voltak egészek eltárolt és te értékelésekor csak az értékeket. Itt, mert húrok tömbök és minden tömbök mutatók, ezért ezek nem egyenlő egymással. Tehát a fajta zavaró, hogy a grafikus. De nézzük csak elképzelni. Már létre egy sor mérete 3 0-tól 2-- 0, 1, 2, azzal a értékei 1, 2, és 3. a bennük tárolt. Minden tömb igazán does-- itt, nézzük csak mondjuk hozok létre egy mutatót E tömb, ami hozzáférés az értéket a első index ezt a tömböt. Tehát itt lenne 0. Jobb? Mindenki érti, hogyan hogy első sorban értékelni? Nagy. És így ha akartam inicializálni A további értékek után, minden, amit csinálunk átcsoportosításáról. Tehát 0, 1, 2, 1. Tehát ez a mutató, mely egykor rámutatva, hogy itt, az összes csinálunk mozog lefelé. Ez az, amit a plusz 1 csinál. És akkor tudunk rakni 2 van. Ha akartuk, hogy 3 az egy után, mi lenne törölni ezt a mutatót, fel 3 odabent. Van ennek értelme mindenki? Igen. Volt egy kérdés? Közönség: Ez [hallhatatlan] van Kérdés, mondom még egyébként. Nem hiszem, hogy ez valójában egy kérdés de-- angol, tömb értéke 1 értelme. Olyanok vagyunk, mint, OK, az első dolog. De a dolgok 0 index [Hallhatatlan] a tömb értéke 0 jelezve az első helyet. ANDI Peng: Igen. Tehát tulajdonképpen mit csinálok itt Én nem hozzáférését az első index. Minden voltam doing-- így először is, mondd meg, mit jelent csillagos tömb csinálni? Mit jelent egy csillag előtt egy mutatót csinálni? Közönség: Ez jelzi a mutató. Hogy te nyilvánító mutatót. Ez de-- ANDI Peng: Ez dereferences amelyek segítségével megy, és valójában kap az értéket. Jobb? Tehát ebben az esetben, azt akarjuk, hogy Az érték itt, és állítja be, hogy az 1. Igen? Szóval nem actually-- én nem igazán törődnek az index ezen, Az összes csinálok csak ismételve le mozgatásával én mutatót lefelé a tömbben. És akkor végül is meg kell állítanunk, ugye? És az is, hogy abbahagyom amikor elütöttem, abban az esetben, Egy string, a null terminátor. Tudom, jaj, ha elütöttem egy back-- ha látom backslash 0, tudom, én vagyok kész ezzel és tudom, hogy én is csak megállítani iterációjával keresztül. Nagyon jó kérdés. És mi lesz igazán megy tovább részletesen ebben a jövő héten mert a darab, hogy fog jár sok használat mutatók. De csak tudom, hogy most, hogy csak egy másik more-- hogy csak egy másik utat A számítógép írni, lényegében, amit csinálsz. Mint Dávid azt mondta előadás, az is, hogy mi hozzáférhet a tömb csak ennek révén tömb 0, 0 konzol, ha csak akarta elérni az első érték. Minden a számítógép csinál fordul hogy abba a ciklussal magát. Így hívjuk szintaktikai cukor, amely csak divatos módja mondván, felhasználóbarát módon, hogy tudnánk, hogyan kell programozni. De a számítógép alatta, mit csinál, ez valójában csak úgy, egy mutató, ami beállításával. De az is, hogy írunk meg, mert könnyebb számunkra gondolni a dolgokat szempontjából dobozok és hogyan kell lejjebb dobozok, van azáltal, hogy a konzolok. Sajnáljuk, hogy tényleg, nagyon rosszul de-- igen. Közönség: Szóval hogyan összehasonlítani két karakterlánc hogy ha ők egyenlő egymással? ANDI Peng: Így Dávid írta ez a program, előadás így én csak fog menni több mint gyorsan és röviden. Az, hogy tennéd, hogy az, hogy ténylegesen kell menni, és hasonlítsa össze a addresses-- vagy az értékeket nyert mutatók. Jól jegyezd meg, hogyan megszerezni az érték itt? Nem érdekel a címét. Hogyan tényleg csak az értéke bármi van itt? Közönség: [hallható]. ANDI Peng: Pontosan. Szóval összehasonlítani a sztár Itt szemben a csillag itt. Azok egyenlő. És akkor megy le. A csillag itt és A csillag van az egyenlő? OKÉ. Ők egyenlő. És csak folyamatosan megy le amíg meg nem nyomja a végén mindkettő. És ha mindegyik egyenlő, akkor tudod, a karakterlánc egyenlő. És C valójában egy funkciót írásos úgynevezett Karakterlánc Comp, amely valójában csak nem, hogy az Ön számára, így nem " kell írni magad. Igen? Közönség: Azt hiszem, az előadás az, amikor mi a összehasonlítani. Mi nem igazán szükség egy számláló, mint a pi, ugye? ANDI Peng: nem mert nem igazán érdekel hány doboz, amit végigjárt keresztül. Minden érdekel, hogy mi lesz menj tovább, amíg tudom, hogy hagyja abba. És tudod, hogy hagyja abba, amikor van valami jelzés hogy te egy null terminátor. Igen. Na-- Közönség: [hallható]. ANDI Peng: Igen. Tehát abban az esetben, összehasonlítva vonósok, én nem igazán érdekel, hány betű are-- azt kell összehasonlítani ha ők igaz vagy hamis, ha ők egyenlő egymással. Nem érdekel, hogy hány betű vannak mindegyik, ugye? Csak érdekel, hogy ez a mérkőzések ezzel és az egy meccsek után és az egymás után mérkőzések egészen a végéig. Jobb? Ennek van értelme? Szóval nem igazán érdekel, hogy hány betű, Csak érdekel, hogy minden a leveleket mérkőzés. Igen. OKÉ. Tudok lépni ebből? Nagy. Futunk egy kicsit rövid a időben, így fogok csak lehetővé teszi, srácok, hogy röviden ezt nézd meg. Fuss be az azonosítóját, ha vagytok kíváncsiak. És ti is, hogy mi ez lesz a nyomtatást. OKÉ. Tehát valami, hogy mi is érinteni kicsit az ötlet mutató aritmetika. Amelyek mind azt, a ahelyett, beállító értékeit mi van tárolva címen a mutatót, ez csak a ténylegesen változó A címet is. Tehát, ha például az emberi akart állítsa a mutatót kézzel, ahogy tennéd ez csak do n-szer akkora, mint a mutató. Jobb? Tehát egy int. Egy int--, hogy hány bájt A memória egy int? Ez a négy, ugye? Tehát, ha tudom, hogy van egy tömbben az összes ints és azt akarom, hogy pont az egyik, utána, én tudom, én csak azt kell mozgatni a mutatót lefelé négy bájt, ugye? És így n-szer akkora, A mutató bájt Mindazonáltal hány bájt te csak fog mozgatni a mutatót lefelé. Így például, ha van egy sor ints, az első, mondjuk úgy, tárolja a 0x00. Tudod, hogy a következő egy lesz a 0x04 mert ez a négy bájt később. És az utána fog lennie 0x08, és így tovább, és így tovább. És igen, a srácok, hogy egy pillantást. Minden, amit csinálsz itt hogy van egy mutatót y és te hozzátéve, hogy a memória, így lejjebb A blokkok lefoglalt memória. Fajta magasabb szintű fogalom. Srácok, nem kell tudni, hogy ezen a héten, de ez minden csinál odalent. OKÉ. Egy másik vicc időt. Két húrok bemész egy bárban. Az egyik azt mondja, szeretnék egy rumos és Coke szemetet értékeket. A másik azt mondja, akkor Bocsássa barátom, ő nem null megszűnik. Srácok kapni. Bocsánat. Ez hogyan tartom magam megy, amikor felkészülni részén Én vagyok be egy pár vicc diák. Egyébként. OKÉ. Mielőtt mozgok on-- így lényegében, most már hatálya alá tartozó valamennyi fogalmi kapcsolatos kérdések mutatók. És akkor mi lesz talk-- mozgó Több, beszélni, hogy miért fontos és hogy ez hogyan illeszkedik a ötlete memória kezelése. De mielőtt lépnénk, Tudja valaki kérdései mintegy mutató használatára, mi folyik mikor te létre mutatók, hogyan történik a hivatkozás az egyes Más, hogyan vannak dereferencing? Bármilyen kérdése van hogy mielőtt lépni? OKÉ. Nagy. Szóval ez elvezet minket ebbe nagyobb a magasabb szintű koncepció A memória kezelése egészére. Tehát, amikor lényegében A számítógép, van Két alapvető típusa a memória vagy a régiók, ahol a memória tárolja. Van itt az úgynevezett A halom és van idelent nevezzük a verem. És fogunk beszélni A verem elsőként, mert A több finagley egyik, hogy Van, hogy milyen fogalmi megérteni, mi folyik itt. Tehát minden verem is-- gondolni ez mint egy fizikai köteg memória ahol van egy memóriablokkot ami félre a programot amíg fut. És ez az, ahol lényegében minden, A helyi változók tárolják. Tehát ez csak egy kicsinyített a képet, hogy a verem. A verem ott vagyok Csak nagyítás egy kicsit. Így lényegében egy köteg van egy csomó funkció a programban. Úgyhogy csak menj vissza A héten két példa ahol volt a fő funkciója valamint egy kocka funkció ahol igyekeztünk létrehozni egy függvényt, amely cubed-- tartott paraméterek, mint bemenet, kockára vágott őket, és visszatért vissza a fő. Tehát az is, hogy ami a memóriában tárolt az, hogy van a fő funkciója itt alul. És akkor minden további funkciót hogy hívja, és adjunk hozzá a tetején, hogy, A memória csak halmozódik a tetején. Gondold azt, hogy a fizikai verem. És így van mindenkinek, fő változók a fő funkciók, mindent, ami folyik itt, tárolni. És akkor, mikor hívtál kocka, megy és másolatot készít mindazoknak paraméterek és tárolja őket felett egy másik helyen. És így miért érdekel? Az ok, amiért érdekel az, hogy nem tudjuk, csak használja a paraméterek here-- változók here-- és cseréljük őket, azt várjuk, őket is meg lehet változtatni itt, ugye? Az ötlet az, hogy ők mentett különböző helyeken a memóriában így, ha az Ön által elérni különböző funkciók, mit gondoltok, mi történik valójában nem történik, mert az memória bit nincsenek összekötve. Így a kérdés, hogy tényleg Fontos számunkra, hogy ilyen megérteni van, mi van akkor, ha kifutunk program, a méret függvényében verem frame-- így fizikailag, hogyan sok memóriát kell még adni neki? Lehet, hogy ez egy óriási funkció így meg kell adni arról, hogy mennyi memóriát. De mintha kisebb lenne azt Szükségem van egy pici kicsit. Tehát az ötlet, hogy ha kifutunk program méretét, hogy a funkció függ, hogy hány változók és a változók típusa hogy azt akarjuk, hogy ez. De mi van, ha száma variables-- és méretben, hogy elhatározta, nem Az Ön által a jeladó, de határozza meg a tényleges felhasználó a program. Tehát, ha akartam létrehozni egy függvény került húrok a felhasználó, de valójában nem tudják, milyen nagy ezek a húrok, ez nehéz nekem oszt a konkrét szükséges memória mennyiségét. Jobb? Mert ha ez function-- ha ez a felhasználó által bevitt egy óriási húr, ez meg fog létrehozni egy hiba A mi úgynevezett lényegében Veremtúlcsordulás ahol túlmutatnak a határait a memória, hogy van. És akkor mit csináljunk? Ha nem tudjuk, csak létre ez a hatalmas verem, hogy mentheti mindent, Mit tegyünk, hogy megoldja ezt a problémát? Így fogunk lépni, és beszélni erről a második típusú memória és akkor tudunk beszélni arról, hogy hogyan tudjuk használni a két együttes hogy megoldja ezt a kérdést. Tehát most megyünk feljebb egy másik része a memória a mi számítógép. Ezt hívják a kupac. Tehát minden a halom egy medence A rendelkezésre álló memória lehet lefoglalásra. Szóval, hogy lehet változtatni, míg A program fut. És így a régió nem használt memóriával is lennie allowed-- amely lehet kiosztott a funkciót nevű malloc, vagy memória kiosztás. Szóval, lényegében, ha futsz egy programot, akkor dinamikusan létrehozni a memóriát A halom és használni, hogy az összes itt. És így, az összes funkciót Itt érheti el a kupac. És így malloc, ez az ötlet, hogy Dávid fajta gyorsan, röviden elkenték előadás, csak egy utat hogy ellenőrizze a memóriát. Mint, amikor csak megteremtése verem funkciók, ha te csak miután a fő funkciója Ön véletlenszerű funkciók, Ön szerint ezek a gyerekek, hogy csak elszaladt, amikor végeztek velük. Ők voltak igazán rossz gyerekek. Létrehozza őket, akkor tanítani nekik valamit, majd amikor szeretné hozzájuk férhet ők Nem ott, mert a memória csak elszaladt. De malloc, illetve a kupac, egy módja , hogy jobb gyerekeknek, ahol akkor milyen létre őket, hozzájuk értékeket, Használja them-- úgy hangzott igazán bad-- használni őket, ahogy szerettem volna, de akkor meg tudja ellenőrizni őket, majd felszabadítani memória amikor szükség van rájuk. Így aztán, ha végeztél a funkciót, a gyerekek jönnek vissza hozzád és még mindig van, hogy az adatok ott. Tehát az is, hogy mi malloc, vagy hozzon létre, memória a funkció void csillagos malloc mérete byte-ban. Szóval ez még csak a prototípusa miért tesszük ezt. Tehát egy példa van hozunk létre egy mutatót típusú int-- int csillagos pointer-- egyenlők malloc mérete int. Tehát az ok, hogy miért csináljuk mérete és nem csak egy number-- mert mindannyian tudjuk, hogy int négy bájt, right-- de egy int csak négy bájtok egyes operációs rendszereken. Az ötlet számunkra, programozók az, hogy mi szeretnénk létrehozni kódot, amely futtatni az összes számítógépen, nem csak mi egyszerű számítógépek. És ez az, amiért szeretjük használni mérete és nem csak a négyes szám. Van ennek értelme mindenkinek? Tehát mérete of-- összes ez egy C funkciót, vagy üzemeltető, megmutatja, hogy hány bájt memóriát tesz egy bizonyos típusú változó veszi fel. Tehát ebben az esetben, mérete int négy. Négy bájt. És malloc fog felszabadítani akár négy bájt a kupac, akkor lehet majd használni a fő funkció, hogy képes tárolni memóriájában. Mindenki tisztában, hogy eddig? Igen? Közönség: Tiszta vagyok, de Csak, hogy több mint clear-- ANDI Peng: OK. Teljesen rendben. Közönség: --size az az [hallhatatlan] lehet ténylegesen [hallhatatlan] s ez valójában nem a dolog, hogy mi akarjuk. Ez nem egy pszeudokódja. ANDI Peng: Nem. Közönség: Ez olyan, mint egy igazi thing-- ANDI Peng: Ez az igazi kódot. Közönség: --we tudja használni. Ez a tényleges. Hűvös. ANDI Peng: mérete jön C. Közönség: Ez teszi az életem boldogabb. ANDI Peng: Igen. Tehát ha egy lusta programozó mint én fajta vagyok néha, Nem szeretem a memorizálás milyen méretű int van, én nem szeretem memorizálása A akkora, mint egy úszó. Mérete mindössze megmondja, hogy mi ez és ez sokkal könnyebb. Minden rendben. Tehát egy fontos dolog, hogy a srácok minden akar szem előtt tartani, ha éppen a malloc az, hogy mindig meg kell nézni, hogy ez null. Szóval, mint mondtam, vissza azt a képet a kupac. A kupac csak ez a hatalmas halom memória, hogy megvan. És azt szeretnénk, hogy képesek legyenek darabokat A memóriát, és használja, igaz? De mi van, ha nincs több memóriát, hogy kupacban? Mit tegyek, ha már használta az összes belőle és megpróbálok malloc több? Hogy nem létezik. Nos, ez az, amiért te fog kapni egy hiba. Fogsz seg hiba. Fogsz hogy egy szegmentációs hiba, ahol megpróbál hozzáférni a dolgokat, hogy nincsenek ott. És így, ahogy mi hogy és az is, hogy mi megakadályozza, hogy az, hogy ellenőrizze hogy ha a mutató a null. Tehát ha én valamit malloc és nem volt több memóriát, hogy kiírja a hiba, mert a pointer vissza Önnek mindössze null. És így, ahogy mi this-- ez nagyszerű design, elég ha megjegyezzük this-- van, hogy bármely alkalommal megpróbálja malloc semmit, fogsz kell ellenőrizze, hogy ha ez null. Mert amikor megpróbál szerezni memória a kupac, mindig meg kell tenni Biztos, hogy a memória. Ez minden van. Szóval elég sok a három sornyi kódot, memorizálni. Minden alkalommal, amikor malloc, puff őket. Fogsz szükség van rájuk. Mert én garantálom, megyünk hogy próbára egy ügyben, és a számítógép fog robbanni, mert te megpróbálom hozzáférésű memória, ami Nem ott, és alakulnak a dolgok lezuhan, és ez nem lesz jó. Szóval csak fúr, hogy az agyadba. Malloc, null. Jó. Minden rendben. Akkor ez szüli a kérdés, hogy mi történik Miután befejezted a munkát, hogy az emlékezet. Mert az egész ötlet annak, malloc volt hogy van ez a kupac hogy ki tudjuk venni memóriát és akkor tudjuk használni azt. Jobb? És akkor mi van, hogy emlékezni van, hogy miután végeztünk vele, tudjuk majd kiszabadítani. Elengedni. Mi lehet elengedni. Vagy pedig te is fog szivárogni memóriát és több rossz dolog fog történni. Lényegében, valahányszor te megható memória, Rossz dolog fog történni, ha nem a dolgok rendesen. Így van, hogy ellenőrizze, hogy először is, ha a rendelkezésre álló memória. És aztán, miután elkészült, azt szeretnénk, hogy kiszabadítani, és lehetővé teszi az operációs rendszer hogy vegye vissza. Szóval, ahogy mi, hogy csak az, hogy funkciót, semmisnek ingyenes, és a mutató E halom memória. Tehát a példa ingyenes mutató. Ez elég könnyű, egyszerű, nem akarja elfelejteni. Szóval nézze meg, ha ez nulla, ingyenes. Mindenki jó? Tehát még egyszer, kódot, hogy a srácok lehet ilyen gyorsan készíthetünk egy pillantást. Tudom, hogy ez egy csomó új szintaxist és minden rendben, ha te, mint ah, Ez mit jelent megint? Semmi gond. Mindez azt jelentette, hogy a kiállításra Egy művelet hogyan mindezek a dolgok együtt is használható. Szóval, hogy van összerakva mint egy rakás elmúlt diák csak ment keresztül egy program. Közönség: Bizonyos szempontból hogy tudjuk actually-- ANDI Peng: oly módon, hogy mi is valójában használni. Lehet, hogy puff be az azonosítóját, akkor fuss ez és ez működik. Közönség: OK. Szóval ez igazi? ANDI Peng: Ez az igazi. Igen. Igyekszem, hogy ez így a betűtípusok is eltérő, hogy amikor az I. típusú ingatlan kódot a font betűtípust használ és hogy az én veszi kód eltér, de Nem tudom, ha ez tényleg működik. Közönség: Nem. Azt gondolom-- ANDI Peng: OK. Közönség: --sometimes [Hallhatatlan] és én vagyok mint, hogy lenne igazán aranyos ha ez valóban egy használható dolog de akkor ez nem egy használható dolog. Szeretem, hogy ez egy hasznos dolog. ANDI Peng: OK. Igen. Majd át, hogy együtt. Légy olyan, mint Dávid, a gyerekek nagyon Szomorú, ha írsz hamis kódot. Minden rendben. Igen? Közönség: Tehát a ptr itt valójában nem egy mutatót, ez egy blokk memória? ANDI Peng: Szóval beszélsz Az első sorban, vagy az egyik, itt lent? Miről beszél ez itt? Közönség: A ptr különböző dolog in-- ANDI Peng: Hát, ide amit én doing-- ténylegesen, Menjünk át itt. Ez a fajta kapcsolatok szépen minden a fogalmakat. Itt van tehát int csillagos ptr. Szóval int mutatót, ez az, ahol mi valójában létre egy mutatót, amely arra utal, hogy egy egész szám. Nos, ez fog mutatni egy egész szám. És megyünk malloc, vagy add, elég memória kiosztott tárolására az egész. Tehát négy bájt ebben az esetben. És akkor, ha ez egyenlő az egyenlők null-- egyenlő null-- fogunk kinyomtatni. Ó, van egy hiba miatt te ki a memóriát, ugye? Ellenkező esetben a visszatérő egyik, hogy csak mondja meg a programot hogy megvan a hiba. És akkor, ha nem Van, hogy az emlékezet, ez fog tárolni, amit kap int ad át a helyét és állítsa be az értéket a mutató. Szóval ez tényleg lesz fizikailag törli ezt az értéket és tedd, amit kap int visszatér. És akkor fogsz print bármit is beírni. Közönség: És ez lesz a halom? ANDI Peng: Ez lesz hogy a kupac. Közönség: És úgy, hogy lesz elérhető. ANDI Peng: Pontosan. Szép. Jó. Közönség: Tehát amikor ingyen PTR ebben Utolsó lépésként vagyunk szabadítva a mutató vagy mi felszabadítja a blokk? ANDI Peng: Igen. Szóval felszabadítja a pointer-- Nos, felszabadítva a memóriablokkot. Szóval csak így is elérheti a memória azáltal, hogy a mutató. Ha nincs meg a mutató, akkor mint, ó, nem tudom, hol van, ugye? Tehát, ha szabad azt, akkor lényegében felszabadítva, hogy egész blokk. Ezután a számítógép tudja, ó, nincs semmi használható itt, Én csak fel a szemetet értékeket vissza újra. Közönség: Szóval egész léteznek erre? ANDI Peng: Ne egészek létezik? Bocsánat. Tud ismételje meg kérdését? Közönség: Úgy értettem, miután szabad a mutató, az egész, hogy kapsz, lesz, hogy még mindig léteznek? ANDI Peng: Nem, nem. Vagy legalábbis ez lesz az ön országában memória, mielőtt a számítógép nem amit vele, de van nincs módja, hogy értem. Mert akkor szabadult a mutatót. Nem tudom, hol van már. Igen. Megyek lépni itt. Pfuj. Úgyhogy egy csomó fogalmi nehézségei memória kezelése és mi csak megy lényegében költeni 5, 10 perc alatt megy több mint szintaktikai dolgok lesz használható és hasznos a srácok, de nem túl koncepcionálisan odakint. OKÉ. Szóval teljesen a sebességváltást itt. Memória kezelése, nehéz. Mutatók, nehéz. Igen. Ez nagyon, nagyon nehéz. Teljesen rendben. Ezért a darab lesz igazán nehéz. De ha megy, és nem a dolgokat, hogy mi vagyunk kéne csinálni, hogy arról dolgok null, győződjön meg arról, hogy ellenőrizze, ha a dolgok null, győződjön meg arról, hogy a szabad memória, győződjön meg róla, a dolgok nem szivárog, akkor jó lesz. Akkor lesz állítva. Minden rendben. Így fogunk beköltözni ezt teljesen új koncepció átirányítást. És így, mielőtt most, a fő út, amin már kölcsönhatásban áll a programok révén szabványos bemenet és szabványos kimenetre. Jobb? Mi, mint a felhasználó által megadott dolgokat, és a számítógép kiköpi vissza hozzánk a terminálon. De vannak más módja számunkra, hogy kölcsönhatásba lépnek A számítógép a mi programok, amelyek nem csak nekem fizikailag gépelési dolgok amikor én kéri. És ahogy mi tesszük, hogy keresztül nagyobb, mint a sárgarépa és a cső szimbóluma. Szóval mi is olvasni és írjon fájlokat, hogy. Tehát az is, hogy mi ez a nagyobb, mint a sárgarépa, minden, ami csinál az írás, amit a fájl külön fájlba. Így például, ha I akart futni hello world és szerettem volna a kimenetet menti másik fájlt és nem csak nyomtatott ki nekem, én csak csinálni nagyobb, mint a sárgarépa, output.txt. Tehát minden, ami ezzel a vevő én hello.world program és amit a kimenet, ez mentés nevű fájlt output.txt. Tehát az is, hogy Dávid tett a Csv nevével diákok, ez ugyanaz, amit a fiúk szoktak. És mi van, különösen Hasznos itt vannak a nagyobb than-- a két nagyobb, mint a sárgarépa jelek, amelyek segítségével hozzáfűzni, hogy a kimeneti fájlt, amely azt jelenti, hogy egyszerűen csak hozzá a tetején. Tudod csak folyamatosan növeli output.txt minden további dolog hogy mit csinálsz. Vagy, ha elkezd bekerülni több bonyolult programok, a két nagyobb mint a sárgarépa, hogy csak nyomatok ki a hibaüzeneteket. Tehát mondjuk van egy óriás összegét hibaüzenetek és el szeretné olvasni végig őket, és Nem akarom, hogy kell görgetni keresztül a terminál, akkor valójában csak csináld nagyobb, mint output.txt és ez meg fog menteni az összes hibák nevű fájlt output.txt, hogy akkor megy át, és olvasni. Közönség: Hol van az elmentett szövegfájlt? ANDI Peng: Ez menti azonos könyvtár, amely a program. Szóval csak menj vissza, és keresni kell. És ugyanaz a dolog, tehet bemenet hogy mi is valójában venni tartalmát néhány fájl és mi lehet a bemeneti hogy programunkban. Tehát ahelyett, hogy ezt parancsot vonal érveit, ahol fizikailag kell beírni a dolgokat Minden egyes alkalommal, akkor valójában csak egy fájlt úgynevezett INPUT.TXT hogy csak teszi mindezt a. És akkor cső kifejezetten jó, mert ez eltarthat kimenete egy program és használja azt a bemeneti A másik program. Így például, a srácok "Vigenère, van ebben a sorban a kódot, amit srácok fut, amit talán talán Nem igazán tudom, mi volt doing-- ez ./generate 1000 cső ./42. Jobb? Tehát minden, ami ezzel, ha csak vessünk egy pillantást ezt lépésről lépésre, A ./generate, ez azt jelenti, én vagyok futtatni a programot generál. Melyek a legtöbb 1000 a bemenetére. Szóval azt akarom, hogy létrehoz 1000 véletlen Számok és fogok cső hogy-- vagy én fogom használni hogy-- kimenet mivel azokat az én nevű programot találni. És én fogom próbálni, hogy megtalálja-ből 42 A számok generált azoktól 1000 számok. Ez azt kódsort teszi értelme mindenki más? Tehát így vagyunk megtakarítás magunknak egy csomó lépést. Nem kell futtatni generálni, mentse a fájlt, majd tedd be lelet. Mi is csak ezt az egészet egy sorba. Tehát bármit generált kimenetre, puff ez jobb vissza, hogy megtalálja. Igen? Közönség: És szempontjából parancs argumentum, a hogy-- ez Három parancssori paramétereket? Ez generál, find-- nem, four-- generál, 1000, megtalálja és 42? Vagy the-- ANDI Peng: Szóval a cső nem igazán számít parancssori argumentum Mert a fordító vagy a terminál tudja, hogy cső, ó, tudom, hogy meg kell nézni, mielőtt a cső, mert ez az én kimenet és azt kell nézni, miután a cső, mert ez az én bemenet. Tehát tudja, hogy-- a ./generate és 1000 között, ez két parancsot, majd érvek csak az első program. És akkor a ./find 42 két parancs argumentum a második program. Igen. Mindenki jó ezen? Tehát csak tényleg gyorsan, mit E három sornyi kódot csinálni? Meglehetősen egyszerű. Bárki, aki akar mondani, amit az első sorban nem? Közönség: [hallható]. ANDI Peng: Gondold azt, hogy csak-- mit jelent a nagyobb, mint a sárgarépa csinálni? Közönség: Ez hozza valamit a következő sorba. ANDI Peng: Szóval mi van az ellentettje? Közönség: Ez hozza a következő dolog az első dolog. ANDI Peng: Igen. Tehát minden, ami ezzel a te egy program futtatása .hello-- futsz nevû programot helló. Fogsz adni neki egy bemeneti nevű INPUT.TXT. Jobb? Mert úgy mondanám, hogy csak fizikailag megy helló. És akkor fogsz menteni a kimeneti nevű fájlt output.txt. Mi a helyzet a második sorban? Elmondanád, hogy mi A második sor nem? Közönség: [hallható]. ANDI Peng: Sajnálom. Mondd újra. Elliot. Közönség: Tehát ez hozza a fenti számokat találni. ANDI Peng: Igen. Tehát találni, emlékszem, a Ahhoz, hogy futtatni megtalálni tudniuk kell, ahol a 'keres. És így minden, csinál itt az, hogy ez így egy előre megadott Set of számok, akkor megtalálja megy keresni azokat a száma 42. És akkor 15. Ne feledje, hogy a srácok futott ez amikor tesztelték a kódot. Most már érti, mit csinál? Közönség: Ez üzembe Az utasítások halmaza a [hallhatatlan] keresztül hármat Három hogy the-- hogy megnyerjük a játékot. ANDI Peng: Igen. Közönség: Ez bemenetek azoknak utasítások be a programba. ANDI Peng: Elég sok. Tehát a hullámvonal CS50. / Pset3 / 3x3, minden, csinál az volt, hogy létrehoztunk egy szöveges fájl már az összes címek kész srácok. És így a játékot játszani, akkor csak-- mi csak fel, hogy a programba. Szóval mi volt létre ezt fedélzeten, majd mi azzal, hogy e fórumon a programba futott, és létrehozott egy cserép három három. Ez minden, ami csinál. És így volt valóban varázslatos folyik a színfalak mögött hogy a srácok nem program, hogy mi van programozva. De most ti értem, miért tettük, hogy így minden jó. Minden rendben. Tehát miközben átirányítás egy nagyon hasznos, C. van egy általános mechanizmust az olvasás és írás fájlokat a saját. Semmi sem fogalmilag Nehéz itt, így én vagyok csak fog átmenni nagyon, nagyon gyors. Minden ez némi memorizálás és ügyelve arra, hogy a srácok szintaktikailag helyes használatban. Az hogy mi lenne, hogy az, hozzon létre egy fájlra való hivatkozás, mi lenne megnyitni a fájlt, és akkor tenne minden írás és olvasás majd zárja be a fájlt. Amikor a dolog srácok szeretnénk, hogy tartsa szem előtt hogy miközben ezt, mert zárunk, és a fájlok megnyitása, az összes ilyen parancsok szerepelnek A standard-- a standard I / O könyvtárban. Úgyhogy győződjön meg róla, amikor te Ezzel, hogy már included-- # included-- standard I / O pont h. Tehát igazi gyorsan. Első lépés, a létrehozni kívánt hivatkozással, hogy a fájl. És most, hogy megtettem mutatók, akkor srácok tudja megmondani, hogy mi a kódsort csinálja. Jobb? Minden, ami csinál teremt pointer nevű fájl típusú fájl. Mert tudod, hogy ez lesz hogy pont egy fájlt, és te majd nyissa meg a fájlt. Akkor te f open-- összes ez a fájl megnyitásakor. Ez a fájl nevét. És van három dolog, amit tehetünk. Tudod olvasni, írni, vagy hozzáfűzni. Legáltalánosabban, srácok majd olvasni, vagy írásban mert te sem lesz megadásával egy fájl vagy kimenetre egy. Szóval elég sok r és w a két dolgokat fogsz használni leginkább. Tehát ebben az esetben, amit tettem az hozzon létre egy mutató a fájl nevű fájlt. Nyitok meg, és én vagyok reading-- vagyok fájl megnyitásakor nevű fájl.txt és én azt olvassa. Ez minden, amit csinálok ezen a ponton. És akkor ezek csak működö amely el tudja olvasni a különböző dolgokat vagy írjon különböző dolog vagy hagyja, hogy különböző helyeken ahol meg akarom nézni. Mindezek az interneten. Mindezek a ha csak a Google. Nem kell memorizálni őket. Ők csak ott, eldobható saját használatra Ha szeretne tudja használni őket. Tehát ha azt akartam, hogy csak olvasni Egy karakter egy időben, Én megtenném fájl fgetc. Vagy ha akartam olvasni egy sor szöveget egy időben, én tennék fgets. És így tovább és így tovább. Mindezek a csak csináld különböző dolgok srácok használhatja. És akkor végül, miután én végzett az olvasással, vagy írásban, Csak megyek, hogy fclose, hogy a fájl. És ne feledd, ez az egyik azoknak, emlékszem, kérjük Ehhez egyébként a fájlt nem fog működni. Mindig nyitott egy kép előtt olvasás vagy olvasás, van, hogy mindig bezárni, ha megnyitja azt. Ugyanez a helyzet a memória, nem igaz? Meg kell mindig memória és a szabad azt. Itt van, hogy mindig nyitott egy fájlt, mielőtt megpróbálja olvasni és mindig meg kell bezárni megnyitás után. Szóval ez is az interneten. Megyek megtámadni titeket, hogy fajta írni egy programot, amely kiírja hello.world egy fájlba. Ez így nagyon egyszerű. Lényegében csak magában A néhány sornyi kódot hogy éppen írt korábban. Fogsz őket együtt, és írtam. Így néhány fontos dolgot kell szem előtt tartani míg a srácok megpróbálják ezt használja. Ha ez mind nagyon hasznos a PSET ezen a héten, hogy fopen létrehoz egy fájl mutatót. Ez valójában nem a fizikai fájlt. Minden azt mutatva, hogy a fájlt szeretnénk megnyitni. És te lényegében bármikor Ön által használt bármely más funkciók mint fread vagy fwrite vagy fgetc vagy fgets, az hogy te csak múló körül ezt mutatót az összes említett funkció. Szóval nem a ténylegesen figyelembe, hogy fájlt, és használja a funkciót, te csak figyelembe a mutató máskor meg azok a funkciók, így tudod használni. És ha elfelejti bezárni A fájl Használat után, a program fog szivárogni a memória. Lényegében minden eszközzel az, hogy a rossz dolgok fognak történni és a program nem működik megfelelően. És így tovább a PSET a Az elején, azt hiszem, van egy rövid ahol explained-- Nate explained-- mi Valgrid volt. Minden Valgrid van egy módja, hogy győződjön meg róla, hogy nem szivárog a memória. Szóval ti szeretnénk, hogy győződjön Biztosan nézni, hogy a rövid mert ez mindent megmagyaráz nagyon jól, hogy mi történik. OKÉ. Így mentem keresztül, hogy tényleg, nagyon gyorsan, mert nagyon szeretnénk elérni, hogy beszél A PSET mielőtt srácok hagyja. Van valakinek kérdése fogalmilag? Többnyire mindez csak szintaxist segítségével olvasni vagy írni a fájlokat. Végül mindenki kedvence. Fogunk beszélni a PSET most. Szóval, kezeket fel, hányan srácok olvassa a specifikációt ezen a héten? Ó, ez csak félig. Az jó. Tehát ez valójában egy nagyon, igazán szórakoztató PSET abban az értelemben, hogy úgy érzi, mint egy detektív, mert te mindent megtesz ezek nagyon klassz dolgokat hogy nem tudja, hogy lehetne csinálni de most ez nagyon klassz hogy meg tudod csinálni őket. És ez valójában egy csomó egyszerűbb, mint gondol srácok. Tehát az alapvető felét ez a program maga majd letölteni a forráskódot, vagy forgalmazás kódot írta nekünk. És fogsz egy mappát úgynevezett BMP és egy másik mappába nevű JPG. Belül a BMP, te megy, hogy a három program. Egyikük már írt neked. Tehát copy.c egy olyan program, mi már írt Önnek, hogy fogsz letölteni. Minden, ami nem az, hogy a bemeneti kép és teszi egy-egy példányt a kibocsátás. Ez minden, ami fájlt csinál. De mit akarsz, hogy cselekedjem whodunit-- így hányan srácok emlékszem ötödikben vagy maybe-- te younger-- talán a harmadik fokozat, ha a srácok voltak titkos üzeneteket és Ön volt, hogy egy darab papírt rajta dekódolni az üzenetet? Igen? Szóval ez minden, amit csinálsz kivéve, ezúttal egy számítógép. Szóval adtam neked ezt a szép képet. Nem úgy néz ki semmit, de alatta ez egy nyom, hogy segíteni fog neked A kérdés megválaszolása kérünk benneteket. Lényegében mit akarsz tennie, hogy input, hogy a fájl, csípés néhány dolog körül, Talán a színek, váltás dolgokat, így bármit Az üzenet jöhet át. Tehát benne vannak rejtett pixel és információk hogy ha írsz a kódot helyesen fog dekódolni, és mondd meg mi ez a nyom. És így néhány hasznos tippet, hogy hogyan azt járni megközelíti ezt. Azt szeretné, hogy megismertesse magát fájl I / O mert mi olvasása fájlokat és írásban fájlokat. Jobb? És így amikor teszünk hogy, hogy magában foglalja a file I / O. Fogsz Van, hogy megismerkedjen a, hogyan nyit kép fájlokat? Hogyan írj fájlok, mint a képek? Hogy csinálod azokat a dolgokat? Ez lesz igazán hasznos. Másodszor, hogy van lesz képes megváltoztatni A színek tisztázzuk ezt a képet? Ez valószínűleg bevonni beállítani a pixel vagy az RGB-értékek Valahol ott, lényegében. Nincs jó módja megoldásában, amíg can-- ameddig csak lehet egyfajta kiigazítani pixel, hogy ez néznek ki, mint valami, ami érdekel. Ez minden törődünk is. Szóval van sok módja van erre. Csak játszadozik vele, amíg kapsz valamit, ami működik. És akkor lenne igazán Meglepett, hogy milyen néhány sornyi kódot meg kell ténylegesen ezt. Arról beszélek, mint három sornyi kódot összesen hogy meg kell írni annak érdekében, hogy erre a célra. Tehát, ha találsz magadnak írásban 40, 30 sornyi kódot, akkor valószínűleg csinálja rosszul. Mindössze annyit kell tennie, hogy a fajta játszanak a színek és látom, hogy ez ki. Így aztán elindulunk egy kicsit keményebb a probléma. Itt van átméretezni ahol mi vagyunk kérdezem alábbiakra: mi így például input a kép és a átméretezése ez a kép valami Nagyobb, vagy valami kisebb méretétől függően adunk. Úgy emlékszem, az előadás Dávid gyorsan pillantott, hogyan információk érzékeli a számítógép azt jelenti, hogy ez egy fájltípust. Tehát egy Word file különleges karakterek elé, hogy a mondd a számítógépet, hogy ez egy Word file. Ugyanaz a JPEG. Ebben az esetben megyünk hogy adjak egy JPEG fájl. Csak azt tudjuk, hogy a JPEG fájl egy kép, ugye? De a számítógép megkülönbözteti ez nagyon különleges módon. Tehát az elején bármilyen JPEG fájl, te megy, hogy nevezzük a bitmap info fejléc és a bitmap fájl fejlécében. Minden ezek a különböző adattartalommal hogy megmondja a számítógép, hé, figyeljetek, a JPEG jön és ezek a méretek vagy jellemzőit, hogy a JPEG. Szóval srácok nagyon szeretné tudni, milyen adatokat tárol belül e fejlécek és mekkora őket. Mert ha éppen fut révén a programot, fogsz akar átugorják ezt az összeget. Jobb? Mert nem érdekel módosításával a fejléc, törődsz módosításával mi után. Jobb? Úgyhogy győződjön meg róla, hogy tudjátok milyen nagy ezek a dolgok. Másodszor, mielőtt elkezdené megpróbálja átméretezni a képet, akkor valószínűleg szeretne majd menteni a méretei az eredeti. Jobb? Mert ha azt mondom, ez a kép 100 pixel és 100 pixel, és azt akarom, hogy ez négyszer nagyobb, Tudja, hogy meg kell szaporodnak azok méretei néggyel. Így aztán azt szeretné, hogy a kimeneti fájl 400 400 pixel, például. Szóval ez tényleg hasznos a srácok menteni a méretei az eredeti. Aztán utána, miután kész vagy átméretezés, írhatunk új fejlécek a Ezen új dimenziókat átméretezés után. És az is, hogy fizikailag létrehozhat nagy pixel az, hogy meg lehet írni Új RGB-- emlékszem, RGB, Az összes, hogy áll a vörös, zöld, és blue-- pixel egy ki fájlt. És fogsz akar különböző mennyiségű mi hívjuk padding. Minden padding terek előtt és után képeket hogy elmondja your-- lényegében azt szóljon képet milyen nagy is szedhet fel. Ez nagyon elvont a sok ha még nem olvastad a PSET spec, de ez lesz nagyon hasznos, ha a te tényleg olvasta rajta. Te, mint, ó, igen, ennek van értelme. Miért kell ezt megtenni? Van értelme. Végül, ez valószínűleg az egyik a leginkább frusztráló programok valaha csak azért, mert nem tudsz mondd, hogy működik-e vagy sem. Minden ezt a programot, vissza, az Ennek van, hogy ha megfelelően futni, képesnek kell lennie arra, hogy hirtelen visszaszerezze 50 képet elvesztek a mi merevlemez. És így a probléma ezzel a programmal az, hogy nem igazán lehet kipróbálni mert vagy te vissza őket, vagy nem. És így a fajta csak kell játszani körül vele, és ha a program megfelelően működik, akkor hirtelen látni, hogy a A könyvtárban, Van egy hatalmas mennyiségű képeket, amelyek most van. Szóval hogyan kellene megközelíteni ez a probléma, mi vagyunk fog adni mi úgynevezett card.raw fájlt. Lényegében ez Csak egy sérült fájlt az összes tárolt képek, hogy Ön lesz szüksége, hogy felépüljön. Szóval akkor valószínűleg akarnak hogy adja meg card.raw, vagy nyitott, Ön card.raw fájlt, és te szeretne majd manipulálni azt, hogy képes legyen tárolni JPEG. Szóval kezdeném nyomon követésével és tárolása Minden egyes JPEG, ahogy találod. Nem fogod, hogy külön-külön minden Hirtelen csak teremt mind az 50 JPEG. Fogsz szeretné tartani követni, hogy hány te megnyitása. És akkor azt szeretnénk, hogy győződjön meg róla, ha éppen írása buffer-- srácok tudni fogja, mit beszélek Miután elolvasta a spec-- szeretne győződjön meg arról, hogy az Ön által használt aláíratlan char puffer. És akkor szeretném megkérdezni, magadnak a kérdést, hogy, Hány bytes egy CF-- vannak kartoték? Ennyi fogsz szeretné olvasni a puffer. Fogsz szeretnénk, hogy győződjön meg arról, A két align mert akkor nem lesz véletlen memória szivárog ki. Tudja, hogy pontosan hány bájt van szüksége, és hogy hány byte hogy azt szeretné, hogy van. És végül, azt szeretnénk, hogy használni a funkciót nevű sprint-- s nyomtatási F-- generálni egyéni fájl nevek minden új JPEG, hogy megtalálja. Így hozunk létre, és találni JPEG a kártya, fogsz akar tárolni őket, és nevezze őket. Jobb? És így fogsz szeretnénk használni ezt a funkciót hogy megteremtse a neveket, tárolhatja az összes JPEG. És végül, ne felejtsük el, hogy lezárja Minden JPEG után kész. Mert amit te eredménye, hogy te lesz valószínűleg valamiféle hurok végigmegy az összes JPEG. Fogsz levelet JPEG és nevezd, ahogy találod. De miután végeztél minden egyes JPEG, be kell zárnia, hogy így meg lehet kezdeni újra és lépni a következő képet. És így valamit, ami Nagyon szórakoztató, hogy szeretjük csinálni, mert ez egy ilyen furcsa probléma beállítva hanem hátborzongatóan kielégítő probléma Set, az, hogy az összes képet mi az Ön számára, ha vissza rendesen, Az összes kép képek a csodálatos tantestület, mind A Harvard, a here-- és itt a Yale. És ha történetesen vissza ezeket a képeket és azonosítja a személyzet tagjai ezek a kártyák, és vegye selfies velünk, ha talál meg minket az egyetemen, minden fotó elküldi részünkre, akkor kapsz egy gigabájt Dropbox helyet. Tehát lássuk a matek itt. Ha van 50 kép és 50 tantestület tagjai, ha történetesen megtalálja az összes 50 Számunkra ez 50 GB Dropbox, Alapvetően, mi lesz így a srácok. Szóval egy kis plusz hozzáadott ösztönzőket ha a srácok nem csak törődnek beszedik elveszett képeket. Van még némi hozzáadott ösztönzők. Ez egy szórakoztató problémát sor. Ez tényleg. Elég frusztráló, de akkor válik igazán szórakoztató, amikor rájössz, wow, ez működik, és most az összes ilyen kép hogy már csak teremtett magam. Bármilyen kérdésre az PSET? Mert bárki, aki már kezdett, ha kérdésed van, Én itt leszek egy pár perccel azután, részt, ha akar beszélni velem. Szép volt, fiúk. Sajnálom, én információk zúdította srácok. Pointerek nagyon, nagyon kihívásokkal teli és frusztráló. És nagyon örülök, hogy srácok velem maradt. Beszélni fogunk mélyebben a jövő héten mint mi kezdeni ezzel hash táblák és További funkciók, hogy a rájuk. Igen. Tehát ha valakinek van bármilyen kérdésekre, leszek körül. Köszönöm, hogy eljöttetek, és több édességet, mert ott több édességet. Hűvös.