[Powered by Google Translate] DAVID DICIURCIO: Så ett viktigt begrepp att förstå i programmering är begreppet räckvidd. Omfattning kan definieras som det sammanhang i vilket en variabel är synliga eller åtkomliga. Till exempel, låt oss säga att vi har en funktion, huvud, det är tänkt att öka en variabel, X, 1-2. Som vi kan se, initierar viktigaste x till ett, skriver ut lite text, sedan körs funktionen ökningen, innan trycka mer text. Om denna funktion skulle fungera, skulle det skriva ut x som 2. Låt oss försöka det. Så, som ni kan se, gör stora inte vad vi förväntas. Den returnerar värdet 1 i stället än 2 väntat. Anledningen till detta fel kan förklaras av omfattning. I funktionen, huvud, initieras vi X endast inom funktionen. Med andra ord, är variabeln x deklareras lokalt inom funktion, huvud, och är inte tillgänglig utanför funktionen. Endast viktigaste kan komma X i denna situation. När vi kallar steg vi inte passera x som ingången, men endast en kopia av X. Som ett resultat av detta, lägger funktionen inkrementet endast värdet 1 till en kopia av värdet av x. Men inte till x själv. När vi kommer tillbaka till huvudgruppen har X själv inte förändrats alls. Så skriva ut x kommer endast ger värdet 1. Nå, då lämnar frågan: hur ska vi fixa denna funktion? En lösning är att ha ökning returnerar ett värde. På detta sätt, funktionen inkrementet kommer ge oss tillbaka ett heltal. Så här är vår reviderade kod med alternativa inkrement funktion. Här återvände vi istället x + 1, snarare än bara slut där x är lika med x + 1. Också notera att vi ersatt produktionen av ökning, tidigare ogiltig, med int, som anger att ökning kommer nu passera tillbaka ett heltalsvärde. Nu, efter inkrement körningar, återgår till ett värde av 2, precis som vi tänkt. En annan situation som visar omfattningen betydelse är i scopeloop.c. I denna kod har vi en for-slinga där variabeln totalt initieras under varje steg. Tyvärr sammanställa denna kod inte. Detta är eftersom variabeln totala faktiskt inte existerar utanför for-slingan. Variabler som deklarerats inom slingor existerar endast inom slinga själv och demonstreras i vårt fel meddelande, totalt odeklarerat. Den rörliga totala har ännu inte deklareras inom ramen av funktionen huvud. Dessutom under varje iteration av vår for-slingan, vi är återinitialisera vår totalt 0. Detta i sig håller inte koden från kompilering, men det skulle förhindra totalt från att någonsin summering till ett värde förbi 1. Återigen, vad är det bästa sättet att åtgärda detta? En av de enklare metoderna innefattar att den totala lokal till funktionen, huvud, snarare än till slingan själv. Detta kommer att uppgå till faktiskt öka, och slutligen, att den kan skrivas ut efter for-slingan. En annan teknik som jag ska bara kort sammanfatta skulle vara användningen av globala variabler. Globala variabler är variabler som deklareras före huvud som upprätthåller sitt värde under hela programmet. Naturligtvis kan funktionerna ändra värdet på en global, men de går inte utanför ramen som lokala variabler. Men med hjälp globala variabler tenderar att rynkade på som dålig design, eftersom det finns bättre sätt att dela data mellan funktioner. Till exempel, med användning av pekare. Men mer om det en annan gång. Slutligen är det viktigt att ha en förståelse för omfattningen inom ramen för datorns minne, eller RAM. När vi utför ett program, lokala variabler och funktioner sättes till en specifik plats i RAM kallas stapeln. Som funktioner gengäld stapeln ramar variablerna är effektivt avlägsnas från stapeln frigöra mer minne. Så när du granskar omfattning, se till att du kommer ihåg dessa tre viktiga punkter. Ett, omfattning kan vara antingen lokalt eller globalt. Det beror på var variabeln är deklarerad. Två, variabler deklarerade eller initieras funktioner är lokal för denna funktion och kan inte ändras av andra funktioner, åtminstone inte utan att använda pekare. Slutligen, variablerna är också lokal loopar som är deklareras enligt. Variablerna är inte tillgängliga utanför slingan. Det var allt för nu omfattning. Tack för att titta.