Hallo, willkommen zurück.
In diesem Vortrag möchte ich sprechen über lokale und globale Variablen.
Das ist wirklich das Konzept der Funktion Umfang oder allgemeiner Programmumfang.
Es hat damit zu tun, wann Sie können Variablen verwenden und wenn
Sie sie nicht verwenden können.
Wir wissen, was Funktionen sind.
Also jetzt möchte ich reden über lokale Variablen.
Lokale Variablen müssen wirklich reichen mit mehr als nur Funktionen.
Lokale Variablen haben damit zu tun alles, was einen Codeblock hat.
Also Variablen definiert im Inneren einer Funktion sind als
automatische lokale Variablen bekannt.
Also in diesem Funktionskörper dazwischen diese beginnenden und endenden Klammern,
wenn Sie eine Variable deklarieren, dass Variable ist eine lokale Variable.
Es wird automatisch erstellt jedes Mal, wenn die Funktion aufgerufen wird.
Auch alle Werte in der Der Zugriff auf diese Variable ist nur
lokal für die Funktion.
Sie können nicht auf diese Variable zugreifen außerhalb dieser Funktion.
Auf die Variable kann also nicht zugegriffen werden in anderen Funktionen, wenn es für
eine bestimmte Funktion lokal ist.
Es ist nur zugänglich von wo es definiert ist.
Wenn ein Anfangswert angegeben ist Für eine Variable
innerhalb einer Funktion ist dieser Anfangswert Wird der Variablen bei jedem Aufruf
der Funktion zugewiesen.
Wenn Sie einen Wert in behalten möchten eine Variable bei jedem nachfolgenden Aufruf, es gibt
tatsächlich eine Möglichkeit, dies zu tun In c wird es als statische
Variable innerhalb einer Funktion bezeichnet.
Das ist wieder etwas fortgeschrittener Konzept nicht in einer
Anfängerklasse, aber es ist ein Weg, den Sie können Tatsächlich haben Sie
jedes Mal, wenn Sie Funktionen aufrufen, unterschiedliche Daten.
Also wenn du zum Beispiel behalten willst Als Zähler dafür, wie oft eine Funktion
aufgerufen wurde, würden Sie a deklarieren lokale Variable innerhalb dieses Funktionsnamens
static mit einem statischen Schlüsselwort.
Aber ohne nur regelmäßig Lokale Variablen werden jedes
Mal neue Werte haben.
Sie können das Schlüsselwort auto vorher verwenden der Datentyp, aber es ist nicht notwendig.
Es macht es zu einem etwas genauer.
Der Compiler wird es von hinzufügen Standard, wenn Sie es nicht einschließen.
Aber wenn Sie es einschließen, ist es
Nur um es genauer zu machen, ist es nicht notwendig.
Also heißt es ein automatische lokale Variable.
Es gibt ein Schlüsselwort namens auto in c, Sie müssen es jedoch nicht
standardmäßig bereitstellen, und aus diesem Grund Sie sehen es nicht in vielen Beispielen,
in denen Variablen definiert werden und innerhalb einer Funktion deklariert.
Lokale Variablen gelten auch für Jeder Code, in dem die Variable in einem Block,
in Schleifen oder in if-Anweisungen erstellt wird.
Wieder, wenn Sie eine if-Anweisung in haben Was ist ein Block für eine
if-Anweisung? Hier beginnen die Klammern.
Das wird als Block bezeichnet.
Blöcke können in Funktionen sein, Blöcke können if-Anweisungen sein, Blöcke können
sich in Schleifen befinden.
Blöcke können überall sein Im Wesentlichen gibt es Klammern.
Überall gibt es Klammern und Sie erstellen diese Variable.
Die Erstellung der Variablen wird deklariert es und vielleicht Werte zuweisen.
Aber wenn Sie diese Variable deklarieren, Wenn Sie diese Variable innerhalb
eines Blocks erstellen, können Sie sie nur verwenden diese Variable innerhalb des Blocks.
Wenn Sie versuchen, darauf zuzugreifen Variable außerhalb des Blocks, wird
nicht verwendet.
Wenn Sie also eine if-Anweisung haben, Innerhalb der if-Anweisung,
auf die Sie eine Variable deklarieren, können Sie zugreifen Diese Variable außerhalb
des if-Anweisungsblocks entspricht den Schleifen.
Es ist sehr wichtig um das zu verstehen.
Der Compiler wird sich beschweren und geben Sie eine Fehlermeldung,
wenn Sie versuchen, woanders darauf zuzugreifen.
Und was dies bedeutet, ist das Werte in den Daten gelten
nur für diesen Block.
Sie teilen keine Daten.
Globale Variablen ist die Gegenteil einer lokalen Variablen.
Auf globale Variablen kann zugegriffen werden durch eine beliebige Funktion im Programm.
Die Art und Weise, wie Sie eine globale erstellen Variable ist, dass Sie es
einfach oben außerhalb einer Funktion platzieren.
So werden globale Variablen deklariert außerhalb der Funktion und sie gehören
keiner Funktion an.
Denken Sie daran, das Hauptschlüsselwort Das Haupt ist eine Funktion.
Also alle Variablen definiert in Die Hauptfunktion ist nur
in der Hauptfunktion zugänglich.
Also die Variablen in der Hauptsache Funktionen sind in keiner
anderen Funktion zugänglich.
Wenn Sie eine Variable wollen, ist das Wenn Sie von allen Funktionen verwendet werden,
setzen Sie die Variable außerhalb einer Funktion. normalerweise oben in der
Quelldatei und normalerweise als markieren Dies zu sagen ist eine globale Variable.
Die globale Variable ist eine Lüge für die Gesamtheit des Programms von dem Zeitpunkt, an dem das Programm
startet, bis zu dem Zeitpunkt es stoppt, diese globale Variable wird
sich im Speicher befinden.
Jede Funktion im Programm kann Ändern Sie den Wert dieser globalen Variablen, weil sie haben Zugriff darauf, können
sie es ändern.
Und so sollten Sie anfangen zu denken über wow das scheint irgendwie gefährlich, denn jetzt hast du
Code, der überall auf dieselben Daten zugreifen kann,
aber wir werden darauf zurückkommen.
Wenn eine lokale Variable deklariert ist in einer
Funktion mit dem gleichen Namen wie eine globale Variable, dann das Die Funktion verwendet die lokale Variable und
maskiert die globale Variable.
Wenn Sie also eine globale Variable mit dem Namen haben x und Sie
haben eine lokale Variable namens x innerhalb einer Funktion, die lokale Variable wird Vorrang haben.
Es wird sich nicht ändern die globalen Variablendaten.
Wenn Sie das zuweisen Variable, es wird
nur die lokale Variable geändert.
Die globale Variable ist es also nicht zugänglich, wenn Sie den gleichen
Namen haben, und es wird eigentlich nicht innerhalb dieser lokalen Funktion zugegriffen werden, verwenden
Sie also nicht dieselbe Namen im Grunde, weil es nur
verwirrend sein wird.
Für Leute, die programmiert haben Viele fortgeschrittene Programmierer
haben dies sofort bemerkt.
Sie werden sagen, hey das nur wirkt, es ändert nur die
lokale Variable, selbst wenn sie eine sehen globales Verb mit dem gleichen Namen.
Aber für Anfänger ist es nicht immer sehr klar.
Lassen Sie mich Ihnen ein Beispiel geben.
Hier in diesem Beispiel sind wir Erstellen einer globalen Variablen
ganz oben vor der Hauptfunktion.
Und wie Sie sich organisieren möchten In Ihrem Programm werden
normalerweise nach einigen Anweisungen Anweisungen oben eingefügt Kommentare vielleicht, und dann haben Sie vielleicht einige
definierte Konstanten und dann Sie hätte Ihre globalen Variablen.
Globale Variablen sehen einfach aus wie normale Variablen.
Es ist nur dort, wo sie sind tatsächlich deklariert.
Wenn sie außerhalb von deklariert sind eine Funktion, dann sind sie global.
In diesem Beispiel haben wir also eine globale Variable namens my global.
Wir initialisieren es auf 0.
Wir können diese auch initialisieren globale Variablen überall.
Wir können sie initialisieren, wenn Wir deklarieren sie oder können
sie in jeder Funktion initialisieren.
Es ist eine ganze Zahl.
Wir haben auch zwei Funktionen, die Hauptfunktion in einer
Funktion namens meine Funktion.
Dort drinnen haben wir Einheimische Variablen, auf die nur innerhalb
dieser Funktionen zugegriffen werden kann.
In der Hauptfunktion Wir haben eine meiner lokalen Haupt.
Sie können nur auf meine lokale zugreifen Haupt innerhalb der Hauptfunktion.
Aber weil mein Global eine Variable ist Das ist global, darauf können Sie auch
in der Hauptfunktion zugreifen.
So kann der Hauptzugriff auf zwei zugreifen Variablen, die lokale und die globale.
Und meine Funktion hat eine lokale Variable x genannt, weil es in den
Klammern des Funktionskörpers deklariert ist und wir können tatsächlich auf die globale Variable zugreifen,
die meine globale ist.
Wir können aber auch auf x zugreifen Wir können nicht auf mein lokales zugreifen.
Mein lokales Haupt sollte ich sagen.
Weil meine lokale Hauptleitung nur ist innerhalb der Hauptfunktion.
Wir haben keinen Zugang dazu.
Wenn wir versuchen, meine zu schreiben oder zu lesen lokale Hauptvariable innerhalb der
my-Funktion ist der Compiler Ich werde Ihnen einen Fehler geben.
Sie müssen das verstehen Konzept von lokal versus global.
Lokal befinden sich in Codeblöcken.
Wenn sie deklariert sind, können Sie Verwenden Sie sie nur im Block.
Wenn sich eine Variable außerhalb eines Blocks befindet und es ist nur in einer Funktion oder es ist
nur in einem Programm selbst, Sie können in jeder Funktion darauf zugreifen.
Globale Variablen sollten vermieden werden.
Globale Variablen sind irgendwie eine schlechte Sache.
Der Grund für sie für global Variablen sind schlecht und warum Sie sie
vermeiden sollten, liegt daran, dass es fördert die Kopplung zwischen Funktionen.
Was bedeutet Kopplung?
Kopplung bedeutet Abhängigkeiten.
Wenn Sie eine globale Variable haben und es wird von
vier Funktionen verwendet, das heißt von jeder dieser Funktionen könnte von der
anderen Funktion abhängig sein.
Was ist los mit Abhängigkeit?
Abhängigkeit bewirkt, dass ein Programm ist viel schwieriger zu debuggen und Fehler zu finden.
Wenn Sie einen Fehler in Ihrem Programm haben und Sie verwenden eine
globale Variable und die globale Variable verursacht der Fehler, jetzt könnte dieser Fehler überall in
jeder Funktion sein, die es gibt Verwenden dieser globalen Variablen.
Es macht die Dinge komplizierter wenn Sie globale Daten haben.
Sie haben eine globale Variable, könnte es in Funktion eins, Funktion zwei, Funktion
drei, Funktion vier geändert werden.
Sie beschränken den Zugriff darauf nicht. Es ist auch sehr schwer, wenn Sie den Fehler gefunden
haben und Wenn Sie es isolieren, kann es sehr schwierig
sein, es zu beheben.
Denn jetzt, wenn Sie es reparieren, können Sie verursachen aufgrund dieser Abhängigkeiten
Probleme in anderen Funktionen.
Globale Variablen sollten sein aufgrund dieser Kopplung so
weit wie möglich vermieden, wegen dieser Abhängigkeiten.
Es gibt Zeiten, in denen Sie möglicherweise benötigen um es zu benutzen, aber du solltest es vermeiden.
Und am meisten im Auge zu behalten moderne Sprachen in den meisten objektorientierten
Sprachen wie c ++ und Java, haben nicht einmal das
Konzept einer globalen Variablen.
Sie haben statische Variablen, die können Klassenvariablen sein, aber sie sind immer
noch in einer Klasse gekapselt.
Weil globale Daten so sind eine schlechte Sache, neue Sprachen
versuchen tatsächlich zu verbieten.
Und du solltest versuchen zu vermeiden es, weil es nur Ihr Programm
kompliziert und es macht Es ist schwieriger, Fehler zu finden und zu debuggen.
Anstatt global zu verwenden Daten, Daten an Funktionen übergeben.
Wenn eine Funktion Zugriff benötigt Übergeben Sie es an einige Daten.
Wenn - wenn es viele Daten sind und Sie nicht Wenn Sie viele Parameter haben
möchten, sollten Sie theoretisch nie wirklich haben mehr als fünf Parameter.
Es gibt da draußen ein großartiges Buch namens Called Sauberer Code, der über die
Qualität des Codes und die zu vermeidenden Dinge spricht Dinge zu vermeiden wie globale Variablen.
Es spricht auch darüber, wie viele Parameter, die Sie in
Ihren Funktionen haben sollten.
Und wenn eine Funktion 20 Parameter hat, Es ist ein Hinweis darauf, dass
etwas nicht stimmt, hauptsächlich wegen dieser Funktion macht wahrscheinlich zu viel.
Eine Funktion kann jedoch Zugriff auf Daten haben Durch einfaches Übergeben der Daten können Sie die
Verwendung globaler Daten einschränken.
Und für eine Funktion, die viel braucht Daten können Sie eine sogenannte
Struktur verwenden, über die wir noch nicht gesprochen haben aber das ist ein anderer Weg, das zu tun.
Verwenden Sie also nicht so viele globale Daten wie möglich nur bei Bedarf.
Stellen Sie sicher, dass Sie den Code verstehen.
Stellen Sie sicher, dass Sie dokumentieren es ist wirklich sehr, sehr gut.
Damit jemand anderes hinschaut Der Code weiß sofort,
dass Sie globale Daten verwenden und weiß, wie alles funktioniert.
Dies ist das Konzept des Funktionsumfangs.
Sie sollten dies verstehen müssen, Achten Sie also auf all diese Folien.
Und wir werden auch einige verwenden globale Daten und einige lokale
Daten in unserer nächsten Herausforderung. Vielen Dank.