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.