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.