[Powered by Google Translate] DAVID DICIURCIO: Tak dôležité pochopiť, ako v
programovanie je pojem pôsobnosti.
Rozsah môže byť definovaný ako prostredie, v ktorom je premenná
viditeľné alebo prístupné.
Napríklad, povedzme, že máme funkciu, hlavné, ktorá je
mal zvýšiť premennú, x, z jedného na dva.
Ako môžeme vidieť, hlavné inicializuje x na jeden, vytlačí
z nejakého textu, potom spustí funkcia prírastok, pred
tlač viac textu.
Ak je táto funkcia mala pracovať správne, bolo by to
vytlačiť x ako 2.
Poďme to skúsiť.
>> Takže, ako vidíte, hlavné nie je to, čo sme očakávali, že.
To vráti hodnotu 1, skôr
ako 2 sme očakávali.
Dôvodom tejto chyby sa dá vysvetliť rozsahom.
Vo funkcii, hlavné, sme inicializovaný x
iba v rámci funkcie.
Inými slovami, je premenná x vyhlásený lokálne v rámci
funkcie, hlavné, a nie je prístupný
mimo funkciu.
Iba hlavné prístup x v tejto situácii.
Keď zavoláme prírastok nemáme prejsť x ako vstup, ale
iba kópie x.
V dôsledku toho je funkcia prírastok iba pridáva
hodnota 1 k kópiu hodnotu x.
Ale nie na X,.
Keď sa vrátime na hlavnú, x sama vôbec nezmenil.
Tak vytlačiť x iba výnos hodnotu 1.
>> No, a potom, že opustí otázku: ako by to napraviť
táto funkcia?
Jedným z riešení má prírastok vráti hodnotu.
Týmto spôsobom, bude funkcia prírastok
daj nám späť, je celé číslo.
Tak tu je náš revidovaný kód s
Alternatívne prírastok funkcie.
Tu sme sa miesto toho vrátil x + 1, skôr než len koniec
s x je rovná x + 1.
Tiež si všimnete, že sme nahradili výstup
prírastok, skôr stratu, s int, uvádza, že
prírastok bude teraz odovzdať späť celočíselnú hodnotu.
Teraz, po čiastkových beží, vráti sa hodnota
2, presne tak, ako sme zamýšľali.
>> Ďalšie situácie, ktorá ukazuje rozsah pôsobnosti dôležitosť
je v scopeloop.c.
V tomto kóde, máme pre sláčiky, v ktorom je premenná
Celkom je inicializovaný pri každom kroku.
Bohužiaľ, tento kód nie je kompilácie.
To je preto, že premenná celková vlastne neexistuje
mimo pre sláčiky.
Premenné deklarované v rámci slučky existuje iba v rámci
slučka sám a je znázornený v našej chybe
správa, celkom čiernej.
Premenná Celková musí byť ešte deklarovaná v rámci pôsobnosti
z funkcie hlavnej.
Navyše, pri každej iterácii nášho slučky for, sme
sú reinitializing náš celkom na 0.
Toto samo o sebe nevedie kód z kompilácie, ale
by zabránilo celkom od niekedy súčet na hodnotu okolo 1.
>> Opäť, čo je najlepší spôsob, ako tento problém vyriešiť?
Jedným z jednoduchších metód zahŕňa výrobu celkom miestnej
funkcie, hlavné, skôr než do slučky samotnej.
To bude celkom skutočne zvyšovať, a nakoniec,
aby mohla byť vytlačené po pre sláčiky.
Ďalšia technika, ktorá budem len stručne by
byť použitie globálnych premenných.
Globálne premenné sú premenné, ktoré sú deklarované pred hlavným
že zachovanie ich hodnoty v celom programe.
Samozrejme, môže funkcia zmeniť hodnotu globálne,
ale nejdú von rozsahu ako lokálne premenné.
Avšak použitie globálne premenné tendenciu byť zamračil
na ako zlý návrh, pretože tam sú lepšie spôsoby, ako
zdieľanie dát medzi funkciami.
Napríklad, s ukazovateľmi.
Ale o tom až niekedy inokedy.
>> Napokon, je dôležité mať pochopenie rozsahu
v súvislosti s pamäti počítača, alebo RAM.
Keď sme spustiť program, lokálne premenné a funkcie
sú pridané do určitého miesta vo
RAM tzv zásobníka.
Ako funkcií návratu, zásobník rámy premenných sú
účinne odstrániť zo zásobníka uvoľňovať viac pamäte.
Takže pri revízii rozsahu, uistite sa, že si pamätáte tieto tri
kľúčové body.
Jeden, rozsah môže byť buď lokálne alebo globálne.
Záleží na tom, kde je deklarovaná premenná.
Dva, premenné deklarované alebo inicializuje funkcií sú
Miestne tejto funkcie a nemôže byť zmenená inými
funkcie, aspoň nie bez použitia ukazovateľov.
Konečne, premenné sú tiež miestne slučky, ktoré sú
kódov KN.
Tieto premenné sú prístupné
mimo slučky.
>> To je zatiaľ všetko o rozsahu.
Vďaka za sledovanie.