[Powered by Google Translate] DAVID DICIURCIO: Taigi svarbi sąvoka suvokti
programavimas apimties sąvoka.
Apimtis gali būti apibrėžta kaip kontekstą, kuriame kintamasis yra
matomas ar prieinamas.
Pavyzdžiui, tarkime, kad turime funkciją, pagrindinį, tai yra
turėtų prieaugio kintamasis, x, 1-2.
Kaip matome, pagrindinis inicijuoja į vieną X, grafika
kai kurie tekstą, tada paleidžia funkciją prieaugį, prieš
daugiau teksto spausdinimą.
Jei ši funkcija buvo, kad tinkamai paleisti, tai būtų
spausdinti x kaip 2.
Pabandykime.
>> Taigi, kaip matote, pagrindinis ne daryti tai, ką mes tikėjomės.
Ji grąžina reikšmę 1, o
nei 2 tikėjomės.
Šios klaidos priežastis galima paaiškinti taikymo sritį.
Funkcijos, pagrindiniai, mes inicijuoti x
tik per funkcija.
Kitaip tariant, kintamasis x yra nurodomas jų vietinį vežimą kaip apibrėžta
funkcija, pagrindinė, ir yra neprieinama
ne funkcija.
Vienintelis svarbiausias šioje situacijoje gali naudotis x.
Kai mes vadiname prieaugį mes neperduoda x įėjimo, bet
tik x kopiją.
Kaip šis, funkcija prieaugis tik prideda
vertė 1 x vertės kopiją.
, Bet ne x.
Kai mes grįžti į pagrindinį x nepareiškė pasikeitė.
Taigi spausdinti x bus matomi tik vertė yra lygi 1.
>> Na, tada, kad palieka klausimą: kaip mes turėtume nustatyti
ši funkcija?
Vienas iš sprendimų yra prieaugis grąžina reikšmę.
Tokiu būdu, ši funkcija prieaugis
suteikia mums atgal sveikasis skaičius.
Taigi štai mūsų patikslintą kodą su
pakaitinis prieaugis funkcija.
Čia mes vietoj grąžino x + 1, o ne vien tik pabaigoje
x x + 1 yra lygus.
Be to, reikia pastebėti, kad mes pakeisti išėjimo
prieaugis, anksčiau buvo pripažintas negaliojančiu, int, kuriame teigiama, kad
prieaugis dabar bus perduoti atgal skaitinę vertę.
Dabar po prieaugio veikia, grįš, kurių vertė
2, tiksliai taip, kaip mes skirti.
>> Kita situacija, kuri parodo taikymo sritį svarbą
yra mieste scopeloop.c.
Šiuo kodu mes už linijos, kurioje kintamasis
viso yra inicializuoti prie sekančio žingsnio.
Deja, šis kodas nėra sudaryti.
Tai yra, nes kintamasis viso faktiškai neegzistuoja
ne už kilpos.
Kintamieji deklaruojami per kilpos egzistuoja tik
kilpa pati ir parodė savo klaidą
pranešimą, bendras nedeklaruoto.
Kintamasis iš viso dar turi būti deklaruotos taikymo sritį
funkcijos pagrindinis.
Be to, per kiekvienas iš mūsų iteracija kilpa, mes
mūsų iš viso 0 reinitializing.
Tai savaime nėra išlaikyti kodą rengtų, bet jis
neleistų iš viso kada nors sumuojant kurių vertė per pastaruosius 1.
>> Vėlgi, kas yra geriausias būdas išspręsti šią problemą?
Vienas iš lengviau metodų yra viso vietos iki
funkcija, pagrindinė, o ne kilpą pati.
Tai bus iš viso faktiškai prieaugio ir, galiausiai,
kad ji būtų palikus už linijos.
Kitas būdas, kad aš tik trumpai apibendrinti
globalių kintamųjų naudojimas.
Globalūs kintamieji yra kintamieji, kurie deklaravo prieš pagrindinius valgymus.
kad išlaikyti savo vertę per visą programos.
Žinoma, funkcijos gali pakeisti pasaulio vertę,
tačiau jie neturi išeiti taikymo sritį, pavyzdžiui, vietos kintamieji.
Tačiau, naudojant globalių kintamųjų linkęs būti brwi
ant taip blogai dizaino, nes yra geresnių būdų
keistis duomenimis tarp funkcijų.
Pavyzdžiui, naudojant rodykles.
Kad kitą kartą, bet daugiau.
>> Galiausiai, labai svarbu turėti supratimą taikymo sritį
kompiuterio atmintyje arba atminties.
Kai mes vykdyti programą, vietos kintamieji ir funkcijos
yra įtraukta į konkrečią vietą
RAM vadinamas kamino.
Stack rėmai kintamųjų funkcijos grąžina,
veiksmingai pašalintos iš kamino, atlaisvinti daugiau atminties.
Taigi, peržiūrint taikymo sritį, įsitikinkite, kad jums prisiminti šiuos tris
pagrindiniai punktai.
Vienas, apimtis gali būti arba vietos ar pasaulio.
Tai priklauso nuo to, kurioje kintamasis yra paskelbta.
Du, paskelbti ir inicijuoti funkcijų kintamieji yra
vietos tą funkciją ir negali būti pakeista kitais
funkcijas, bent jau ne be naudojant rodykles.
Galiausiai, kintamieji taip pat vietos į kilpas, kurios yra
deklaruojamas KN.
Kintamieji yra neprieinami
už kilpos.
>> Štai ir viskas dabar su direktyvos taikymo sritimi.
Thanks for watching.