[Powered by Google Translate] DAVID DICIURCIO: So 'n belangrike konsep om te begryp
ontwikkeling is die idee van die omvang.
Omvang kan gedefinieer word as die konteks waarin 'n veranderlike is
sigbaar of toeganklik.
Byvoorbeeld, kom ons sê ons het 'n funksie, Hoofstraat, dit is
veronderstel is om 'n veranderlike, x, inkrementeer 1-2.
Soos ons kan sien, hoof initialisatie x aan die een, druk
'n paar teks, loop dan die funksie inkrement, voordat
druk meer teks.
Indien hierdie funksie was korrek uitgevoer word, sal dit
druk x as 2.
Kom ons probeer dit.
>> Dus, soos jy kan sien, hoof nie doen wat ons verwag het.
Dit gee die waarde 1, eerder
as die 2 wat ons verwag het.
Die rede vir hierdie fout kan verduidelik word deur die omvang.
In die funksie, hoof, het ons geïnisialiseer x
slegs binne die funksie.
Met ander woorde, is die veranderlike x verklaar plaaslik binne die
funksie, hoof, en is nie toeganklik
buite die funksie.
Slegs hoof kan toegang tot x in hierdie situasie.
Wanneer ons inkrement ons slaag nie x as die inset, maar
bloot 'n afskrif van x.
As 'n gevolg van hierdie, die funksie inkrement voeg net
die waarde 1 tot 'n afskrif van die waarde van x.
Maar nie self aan x.
Wanneer ons terug te keer na die hoof, het x self nie verander nie.
So uit te druk x sal slegs opbrengs van die waarde van 1.
>> Wel, dan is dit laat die vraag: Hoe moet ons regmaak
hierdie funksie?
Een oplossing is om inkrement 'n waarde terug.
Op hierdie manier, sal die funksie inkrement
Gee ons weer 'n heelgetal.
So hier is ons hersiene kode met die
alternatiewe inkrement funksie.
Hier, ons plaas teruggekeer om die x + 1, eerder as net die einde
x gelyk aan x + 1.
Ook kennis te neem dat ons vervang die opbrengs van
inkrement, voorheen nietig, met int verklaar dat
inkrement sal nou gebeur 'n heelgetal waarde terug.
Nou, na inkrement lopies, sal dit terugkeer met 'n waarde van
2, presies soos wat ons bedoel is.
>> Nog 'n situasie wat demonstreer omvang se belangrikheid
is in scopeloop.c.
In hierdie reglement, ons het 'n lus wat die veranderlike
totaal geïnisialiseer tydens elke stap.
Ongelukkig is hierdie kode nie saamstel nie.
Dit is omdat die veranderlike totaal eintlik nie bestaan ​​nie
buite die for-lus.
Veranderlikes verklaar binne loops bestaan ​​slegs binne die
lus self en word gedemonstreer in ons fout
boodskap totaal receptie.Niet aangemelde.
Die veranderlike totaal het nog verklaar word binne die bestek
van die funksie hoof.
Verder, gedurende elke iterasie van ons loop, ons
weer initialiseren ons totale 0.
Dit self nie hou die kode van die opstel, maar dit
sou voorkom totaal ooit te sommeer tot 'n waarde verby 1.
>> Weereens, wat is die beste manier om dit op te los?
Een van die makliker metodes sluit in die totaal plaaslike
die funksie, hoof, eerder as om die lus self.
Dit sal die totale eintlik inkrementeer, en uiteindelik,
toelaat dat dit gedruk word na die for-lus.
Nog 'n tegniek wat ek sal net kortliks
die gebruik van globale veranderlikes.
Globale veranderlikes is veranderlikes wat verklaar word voordat hoof
wat hul waarde deur die hele program in stand te hou.
Van die kursus, kan die funksies verander die waarde van 'n globale,
maar hulle gaan nie uit van die omvang soos plaaslike veranderlikes.
Maar, met behulp van globale veranderlikes is geneig om te word afgekeur
op as slegte ontwerp, want daar is beter maniere om
die deel van data tussen funksies.
Byvoorbeeld, die gebruik van wysers.
Maar meer op dat 'n ander tyd.
>> Ten slotte, is dit belangrik om 'n begrip te hê van die omvang
in die konteks van die rekenaar se geheue of RAM.
Wanneer ons 'n program uit te voer, plaaslike veranderlikes en funksies
word bygevoeg na 'n spesifieke plek in die
Ram, genaamd die stapel.
As funksies terugkeer, die stapel rame van die veranderlikes is
doeltreffend te verwyder uit die stapel meer geheue bevry.
So wanneer die hersiening van omvang, maak seker dat jy onthou hierdie drie
belangrike punte.
Een, omvang kan wees, hetsy plaaslike of globale.
Dit hang af van waar die veranderlike verklaar word.
Twee veranderlikes verklaar of geïnisialiseer funksies is
plaaslike daardie funksie en kan nie verander word deur ander
funksies, ten minste nie sonder die gebruik van wysers.
Ten slotte, veranderlikes is ook plaaslike lusse wat
verklaar.
Die veranderlikes is nie toeganklik
buite die lus.
>> Dit is alles vir nou op omvang.
Dankie vir jou kyk.