DOUG LLOYD: Ahogy elkezdi Munka függvényekkel,
A másik dolog meg fog válni Nagyon fontos, hogy megértsük,
amely a koncepció változó hatálya alá.
Tehát hatálya egy jellemző egy változó
amely meghatározza, ahonnan funkciók hogy a változó lehet hozzáférni.
>> Két fő szempontjaik a C, lokális változók és globális változók.
Most, a helyi változók csak belül legyen elérhető funkciók
amelyben ők létre.
Ezeket nem lehet hozzáférni minden más funkciót, hogy létezik a programban,
Csak a funkciót amelyben készítette.
A globális változók, a Másrészt, lehet hozzáférni
bármilyen függvényt a programban.
És az oka, hogy mert ők nem jönnek létre benne
Az adott funkció.
Kijelentjük őket kívül az összes funkciót, amely
azt jelenti, hogy minden funkció sem tudja, hol ez, és képes elérni és manipulálni azt.
>> Eddig során akkor már elég sokat dolgozik kizárólag
A helyi változók.
Íme egy példa egy nagyon, nagyon egyszerű fő funkciója, és egy nagyon egyszerű
További funkció, amit írtam.
Ebben az esetben az X, amely Már csak zöld színű,
hogy kiemelje a településen, vagy hatálya hogy változó,
helyi a funkció hármas.
fő nem hivatkozhat x egyáltalán.
Nem tudom, mi ez.
Nincs más funkciót, sőt, ha Volt kiegészítő funkciók itt,
utalhat x.
>> Hasonlóképpen, eredmények, amit már kék színű, a helyi csupán a fő.
Csak fő tudja, mit A változó eredmény.
tripla nem tudja használni azt.
>> Most, ahogy már említettem, A globális változók léteznek.
Ha kijelentjük, hogy a változó kívül semmilyen funkciót,
az összes funkciót a program hivatkoznak rá.
Tehát ebben az esetben én már kiemelte zöld egy globális változót nyilatkozatot.
Ebben az esetben, a változó nyilvánítják
az úgynevezett globális, csak azért, hogy rendkívül világos róla.
Ez a típusú úszó.
És én rendeljen hozzá az értéke 0,5050.
>> Észre fogod venni, hogy a fő és tripla, képes vagyok utalnak globális.
És valóban, ha elmegyek a programon keresztül jelzett, fő első pályázatok tripla,
tripla szoroz globális 3, amely beállítja annak értékét 1,5-valamit,
1.51 vagy valami ilyesmi, és Ezután fő is kiírja az értékét
A globális.
Tehát fő nem nyomtatja ki 0,5050, akkor kiírja Global Times 3, 1.51.
Szóval van, hogy legyen óvatos, ha dolgoztok globális változók.
Míg ők nagyon rugalmas hogy képes átadni információkat
körül úgy, hogy minden funkciót tudja használni,
ez is lehet néhány veszélyes következményei
Ha egy funkció változások A változó értékét
Mielőtt számítottam rá, meg kell változtatni.
>> Miért ez a megkülönböztetés számít?
Miért érdekel, hogy néhány változó a helyi és mások a globális?
Nos, a legtöbb esetben, a helyi változókat C-ben az úgynevezett által elfogadott érték
mikor egy függvényhívás.
Az mit jelent?
>> Nos, ha egy változót át értékben, a hívott, amely
van más szóval a függvény mely fogadja az változó,
átad a bemenő paraméterként, hogy valójában nem kap, hogy a változó magát.
Ez fogadja a saját másolatát, hogy dolgozni.
Ez egy nagyon fontos különbség.
Mi most láttam egy perce hogy a globális változók,
ha manipulálják a globális változó egy van, a hatás
hogy az egyik funkció hordozza keresztül minden más funkció.
>> De a helyi változókat, ez nem igaz.
Minden funkció, amikor kap változók input
másolatokat kapni azokat a változókat, Nem változók magukat.
Tehát mi a mellékhatása, hogy?
Ez azt jelenti, hogy a változó a hívó, a funkció, amely
van, hogy a függvényhívás, az változatlan hacsak nem változtatja meg azt.
>> Például, ezt a kódot ize nem változott.
Int foo értéke 4, hívja tripla ize, belső hármas,
azt várnánk, hogy ize lenne kell szorozni 3 és visszatért,
de valójában nincs hatása.
>> Itt azonban egy nagyon kis különbség.
Ennek megvan az a hatása, amit akarunk.
Látod, hogy miért?
Mi nyomós ize a fő ebben az időben.
>> Tehát int foo értéke 4, ize egyenlő tripla ize, amikor hívott bennünket,
tripla megkapta a saját példányát ize, saját példányt 4.
Azt mondja, ez a 4-szer 3, vagy bármi változó átad idején 3.
És akkor mi hozzá a visszatérés értéke háromszoros to ize újra.
Tehát ez valóban felülírná ize.
Ez az egyetlen módja annak, hogy ez a helyi változó.
Tehát most, ha nem adunk egy másik kódsort itt
végén a fő, hogy nyomtassa ki a foo értéke,
ez valójában kinyomtatni 12.
>> Változó hatálya általában Nem túl sok a probléma
Ha tudod nevezni az összes változók különböző dolog.
De lehet kapni olyan csúnya ha ugyanaz a változó neve
megjelenik több funkciót, ami történik egy csomó.
Ha bármikor dolgozni A valós világban, ahol
Ön dolgozik együttműködési programok és az emberek a különböző csapatok
együtt dolgoznak, hogy írjon az azonos program vagy ugyanazokat a programokat,
akkor majd gyakran használja újra a változó neveket, különösen gyakoriak is
mint x, y, I, J, és így tovább.
>> De amikor változók az azonos nevű, hatálya kérdések
már kicsit trükkösebb értelmezni.
Például, tudod, mi lenne kinyomtatható
végén ezen egyedi program?
Szánjon egy percet.
Szünetelteti a videót és olvasd el a program révén.
Láthatjuk a tetején vagyunk Van egy függvény deklaráció
Egy nevezett funkció növekmény.
Hogy a függvény egyetlen paraméter egy egész szám, amely nevezünk x.
És kiadja egész.
Ez a visszatérési típusa elején.
>> Aztán ott van a fő, egy pár sort A kódot fő, melyek közül az utolsó
egy print kifejezés.
És ne feledd, hogy ez a kérdés itt.
Mi történik valójában, hogy nyomtatott végén ez a funkció?
És akkor mi valójában van meghatározása növekmény alább.
>> Tehát hogy egy percet, át lehet lépni A kód nyoma a dolgokat.
Tudod, mi lesz kinyomtatva a végén ez a bizonyos program?
>> Minden rendben.
Remélhetőleg, ha már pár másodperccel hogy megpróbálja feldolgozni ezt az egyet.
Csináljuk együtt.
>> Úgyhogy áthúzott növekmény a nyilatkozatot a tetején van.
Ezt a fajta figyelemelterelés.
Ez nem a saját változó.
Nem rendelkezik saját alkalmazási körét.
Ez csak egy függvény nyilatkozatot, így célokra
hogy megpróbáljuk elemezni, mi a történik ebben a programban,
akár azt is csak elkerülni.
>> Most van ebben az esetben, a Ez azért probléma, trükkös
azért van, mert a helyi változókat fő- és növekmény, amelyek mindegyike
az úgynevezett x.
És természetesen a középpontjában ez a kérdés próbál Süss ki, amely x egyre változott
és hogyan átöltözöm.
Úgyhogy színű minden esetben x ez a helyi a fő piros.
És én már színes minden esetben a x ez a helyi növeléséhez kék.
>> Közlemény az adott harmadik sorban A fő Y egyenlő növekmény
x, ez a növelés nem kerül ki telt fő X, vagy a piros x.
Egyre eltelt egy példányt belőle.
És ez csak akkor fog dolgozni hogy példányt belőle, a kék x.
Ha matematikailag ferde, lehet,
ehelyett a gondoltak erre, mint x sub m fő- és x sub az i növekmény.
De ez ugyanaz az ötlet.
x sub m, vagy a piros x Az előző dia,
a változók, amelyek local-- ez a példány x inkább azt, hogy
helyi a fő, és x sub i, illetve a kék változók az előző dia,
az esetben az x, hogy helyi értékét növeli.
>> Szóval, volt képes kitalálni, hogy mi Ezt a funkciót a nyomtatott végén?
Én Doug Lloyd, és ez CS50.