[Powered by Google Translate] DAVID DICIURCIO: So ein wichtiges Konzept in erfassen
Programmierung ist der Begriff der Umfang.
Scope kann als Kontext, in dem eine Variable definiert werden
sichtbar oder zugänglich.
Zum Beispiel, sagen wir mal haben wir eine Funktion, Haupt-, das heißt
soll eine Variable x, 1-2 inkrementieren.
Wie wir sehen können, initialisiert wichtigsten x um eins, druckt
aus einem Text, dann läuft die Funktion Inkrement, bevor
Bedrucken mehr Text.
Wenn diese Funktion wurden um korrekt zu funktionieren, wäre es
auszudrucken x als 2.
Lass es uns versuchen.
>> Also, wie Sie sehen können, ist Haupt nicht, was wir zu erwarten.
Es gibt den Wert 1, sondern
als die 2 erwartet.
Der Grund für diesen Fehler kann durch Umfang erklärt werden.
In der Funktion main, initialisiert wir x
nur innerhalb der Funktion.
Mit anderen Worten wird die Variable x lokal innerhalb der angegebene
Funktion main, und ist nicht zugänglich
außerhalb der Funktion.
Nur wichtigsten zugreifen kann x in dieser Situation.
Wenn wir Inkrement nennen wir nicht passieren x als Eingang, aber
nur eine Kopie von x.
Als Ergebnis davon ist die Funktion fügt nur Inkrement
der Wert 1 an eine Kopie des Werts von x.
Aber nicht X selbst.
Wenn wir zur Hauptseite zurückkehren, hat x selbst überhaupt nicht verändert.
So Ausdruck x liefert nur den Wert 1.
>> Na, dann, dass Bleibt die Frage: Wie sollen wir beheben
diese Funktion?
Eine Lösung wird mit Inkrement einen Wert zurückgeben.
Auf diese Weise wird die Funktion Inkrement
uns wieder eine ganze Zahl.
Also hier ist unsere überarbeitete Code mit den
alternative Inkrement-Funktion.
Hier haben wir statt kehrte die x + 1, anstatt nur Ende
wobei x gleich x + 1.
Auch nehmen bemerken, dass wir die Ausgabe ersetzt
Inkrement, zuvor nichtig, mit int, die besagt, dass
Inkrement wird nun passieren wieder einen Integer-Wert.
Jetzt, nach Inkrement läuft, wird es mit einem Wert von zurück
2, genau so, wie wir wollten.
>> Eine andere Situation, die Spielraum Bedeutung zeigt
in scopeloop.c.
In diesem Code haben wir eine for-Schleife, in der die Variable
Insgesamt wird während jedes Schritts initialisiert.
Leider funktioniert dieser Code nicht kompilieren.
Dies ist, weil die Variable Gesamt tatsächlich nicht existiert
außerhalb der for-Schleife.
Variablen innerhalb von Schleifen erklärt existiert nur innerhalb der
Schleife selbst und ist in unserer Fehler nachgewiesen
Nachricht, insgesamt Schwarzarbeit.
Die Variable insgesamt ist noch im Rahmen deklariert werden
der Funktion main.
Ferner ist bei jeder Iteration der for-Schleife, wir
sind Reinitialisierung unserer gesamten auf 0 gesetzt.
Dies allein nicht halten Sie den Code aus kompilieren, aber es
würden insgesamt von immer Summierung auf einen Wert letzten 1 zu verhindern.
>> Auch, was ist der beste Weg, um dieses Problem beheben?
Einer der einfacheren Methoden gehört es, insgesamt lokal
die Funktion, Haupt-und nicht an die Schleife sich.
Dies wird insgesamt tatsächlich erhöhen und letztendlich
damit sie nach der for-Schleife gedruckt werden.
Eine andere Technik, die ich nur kurz zusammenfassen werde würde
werden die Verwendung von globalen Variablen.
Globale Variablen sind Variablen, die vor main deklariert werden
das behalten ihren Wert während des gesamten Programms.
Natürlich können die Funktionen ändern Sie den Wert eines globalen,
aber sie gehen nicht out of scope wie lokale Variablen.
Allerdings mit globalen Variablen tendenziell verpönt
nach wie schlechtes Design, da gibt es bessere Möglichkeiten,
Austausch von Daten zwischen den Funktionen.
Zum Beispiel mit Zeigern.
Aber mehr dazu ein andermal.
>> Schließlich ist es wichtig, ein Verständnis von Umfang haben
im Kontext der Speicher des Computers oder RAM.
Wenn wir ein Programm auszuführen, lokale Variablen und Funktionen
an einer bestimmten Stelle in das zugesetzte
RAM genannt Stack.
Als Funktionen geben, die Stack-Frames der Variablen
effektiv aus dem Stapel somit mehr Speicher entfernt.
So bei der Überprüfung Umfang, merken Sie sich diese drei
Kernpunkte.
Einer, der Umfang kann entweder lokal oder global.
Es hängt von dem die Variable deklariert.
Zwei Variablen deklariert oder in Funktionen initialisiert werden
lokal für diese Funktion und kann nicht von anderen geändert werden
Funktionen, zumindest nicht ohne Hilfe von Zeigern.
Schließlich sind auch Variablen lokal zu Schleifen, die sich
deklarierten.
Die Variablen sind nicht zugänglich
außerhalb der Schleife.
>> Das ist alles für jetzt Anwendungsbereich.
Danke fürs Zuschauen.