Globale Variable

In der Computerprogrammierung ist eine globale Variable eine Variable, die in jedem Spielraum (wenn shadowed) zugänglich ist. Wechselwirkungsmechanismen mit globalen Variablen werden globale Umgebung genannt (sieh auch globalen Staat) Mechanismen. Dem globalen Umgebungsparadigma wird mit dem lokalen Umgebungsparadigma gegenübergestellt, wo alle Variablen ohne geteiltes Gedächtnis lokal sind (und deshalb alle Wechselwirkungen zum Nachrichtenübergang wiedergeführt werden können).

Sie werden gewöhnlich als schlechte Praxis genau wegen ihrer Nichtgegend betrachtet: Eine globale Variable kann von überall her potenziell modifiziert werden (wenn sie im geschützten Gedächtnis nicht wohnen oder read-only-sonst gemacht werden), und jeder Teil des Programms davon abhängen kann. Eine globale Variable hat deshalb ein unbegrenztes Potenzial, um gegenseitige Abhängigkeiten zu schaffen, und gegenseitige Abhängigkeitszunahme-Kompliziertheit hinzuzufügen. Sieh Handlung in einer Entfernung. Jedoch, in einigen Fällen, können globale Variablen für den Gebrauch passend sein. Zum Beispiel können sie verwendet werden, um zu vermeiden, oft verwendete Variablen unaufhörlich überall in mehreren Funktionen passieren zu müssen. Globale Variablen machen es auch schwierig, Module zu integrieren, weil durch andere geschriebene Software dieselben globalen Namen verwenden kann, wenn Namen durch die Abmachung, oder durch das Namengeben der Tagung nicht vorbestellt werden.

Globale Variablen werden umfassend verwendet, um Information zwischen Abteilungen des Codes zu passieren, die keine caller/callee Beziehung wie gleichzeitige Fäden teilen und Dressierern Zeichen geben. Sprachen (einschließlich C), wo jede Datei einen impliziten namespace definiert, beseitigen die meisten Probleme, die mit Sprachen mit einem globalen namespace gesehen sind, obwohl einige Probleme ohne richtigen encapsulation andauern können. Ohne richtige Blockierung (solcher als mit einem mutex) wird der Code mit globalen Variablen abgesehen vom gelesenen nicht vor dem Faden sicher sein nur schätzt im geschützten Gedächtnis.

C und C ++

Die c Sprache hat kein Schlüsselwort. Jedoch haben Variablen, die außerhalb einer Funktion implizit erklärt sind, ein Spielraum, das alles in der Datei oder Kompilationseinheit bedeckt, die seine Behauptung enthält. In einem kleinen in einer einzelnen Datei enthaltenen Programm haben solche Variablen effektiv globales Spielraum. Andererseits muss eine Variable, die erforderlich ist, globales Spielraum in einem Mehrdateiprojekt zu haben, individuell in jede Datei mit dem Schlüsselwort importiert werden. Solcher globaler Zugang kann implizit durch das Stellen der Behauptung in einer geteilten Kopfball-Datei gemacht werden, da es übliche Praxis für alle.c Dateien in einem Projekt ist, mindestens eine Datei einzuschließen: Die Standardkopfball-Datei ist ein Beispiel, die Variable zugänglich für alle Module in einem Projekt machend. Wo dieser globale Zugriffsmechanismus problematisch beurteilt wird, kann es das arbeitsunfähige Verwenden des Schlüsselwortes sein, das eine Variable einschränkt, um Spielraum abzulegen, und Versuche verursachen wird, es zu importieren, mit, einen Kompilationsfehler zu erheben.

Ein Beispiel einer "globalen" Variable in C:

/* Bemerken Sie, dass dieses Beispiel richtig ist.

global qualifiziert sich als eine globale Variable nicht, wie es nicht "im Spielraum überall" ist.

*/

  1. einschließen

interne Nummer myGlobal = 3;/* ist Das die Außenvariable. * /

statischer leerer ChangeMyGlobal (Leere)

{\

myGlobal = 5;/*-Verweisung auf die Außenvariable in einer Funktion. * /

}\

int Haupt(Leere)

{\

printf (" %d\n", myGlobal);/*-Verweisung auf die Außenvariable in einer anderen Funktion. * /

ChangeMyGlobal ;

printf (" %d\n", myGlobal);

kehren Sie 0 zurück;

}\

</Quelle>

Da die Variable eine äußerliche ist, gibt es kein Bedürfnis, sie als ein Parameter zu passieren, um sie in einer Funktion außer der Hauptsache zu verwenden. Es gehört jeder Funktion im Modul.

Die Produktion wird sein:

3

5

Der Gebrauch von globalen Variablen macht Software härter, zu lesen und zu verstehen. Da jeder Code überall im Programm den Wert der Variable jederzeit ändern kann, verstehend, dass der Gebrauch der Variable das Verstehen eines großen Teils des Programms zur Folge haben kann. Sie machen das Trennen des Codes in Mehrwegbibliotheken schwieriger, weil viele Systeme (wie DLLs) ansehende globale Variablen in anderen Modulen nicht direkt unterstützen. Sie können zu Problemen des Namengebens führen, weil eine globale Variable einen Namen gefährlich macht, um für jeden anderen Vorortszug oder Gegenstand-Spielraum-Variable zu verwenden. Eine lokale Variable desselben Namens kann die globale Variable vor dem Zugang beschirmen, wieder härter führend, Code zu verstehen. Die Einstellung einer globalen Variable kann Nebenwirkungen schaffen, die hart sind, zu verstehen und vorauszusagen. Der Gebrauch von globals macht es schwieriger, Einheiten des Codes zum Zwecke der Einheitsprüfung zu isolieren, so können sie zum Senken der Qualität des Codes direkt beitragen.

Umgebungsvariablen

Umgebungsvariablen sind eine durch einige Betriebssysteme zur Verfügung gestellte Möglichkeit. Innerhalb der Schale des OS (ksh in Unix, schlagen Sie in Linux, command.exe in DOS und cmd.exe in Windows heftig) sie sind eine Art Variable: Zum Beispiel in unix und verwandten Systemen wird eine gewöhnliche Variable eine Umgebungsvariable, wenn das Schlüsselwort verwendet wird. Programm-Code außer Schalen muss auf sie durch API-Anrufe wie zugreifen

und.

Sie sind zum Prozess lokal, in dem sie gesetzt wurden. Das bedeutet, ob wir zwei Endfenster (Zwei verschiedene Prozesse öffnen, die Schale führen) und Änderungswert der Umgebungsvariable in einem Fenster, wird diese Änderung durch anderes Fenster nicht gesehen.

Wenn ein Kinderprozess geschaffen wird, erbt er alle Umgebungsvariablen und ihre Werte vom Elternteilprozess. Gewöhnlich, wenn ein Programm ein anderes Programm nennt, schafft es zuerst einen Kinderprozess, indem es gegabelt wird, dann passt das Kind die Umgebung, wie erforderlich, an, und letzt ersetzt das Kind sich mit dem zu nennenden Programm. Kinderprozesse können deshalb Umgebungsvariablen nicht verwenden, um mit ihren Gleichen zu kommunizieren, die Handlung an einem Entfernungsproblem vermeidend.

Java: kein ausführlicher globals

Einige Sprachen, wie Java, haben globale Variablen nicht. In Java sind alle Variablen, die nicht lokale Variablen sind, Felder einer Klasse. Folglich sind alle Variablen entweder im Rahmen einer Klasse oder im Rahmen einer Methode. In Java bestehen statische Felder (auch bekannt als Klassenvariablen) unabhängig von irgendwelchen Beispielen der Klasse, und eine Kopie wird unter allen Beispielen geteilt; folglich werden statische Felder zu vielen derselben Zwecke wie globale Variablen auf anderen Sprachen wegen ihres ähnlichen "sich teilenden" Verhaltens verwendet.

PHP: globals und superglobals

PHP hat ein Schlüsselwort und mehrere ungewöhnliche Weisen, globale Variablen zu verwenden.

Außerhalb Funktionen erklärte Variablen haben Dateispielraum (der zu den meisten Zwecken das breiteste Spielraum ist). Jedoch sind sie nicht zugängliche Innenfunktionen, wenn nicht importiert, mit dem Schlüsselwort (d. h., die Schlüsselwort-Zugänge globale Variablen, es erklärt nicht) sie.

Jedoch sind einige vorherbestimmte Variablen, bekannt als superglobals immer zugänglich.

Sie sind die ganze Reihe. Ein allgemeiner Zweck man ist das superglobale, das alle Variablen enthält

definiert aus dem Funktionsspielraum. Änderungen zu seinen Elementen ändern die ursprünglichen Variablen, und Hinzufügungen schaffen neue Variablen.

Die superglobals und werden in der Webprogrammierung weit verwendet.

Global-einzig und global standardmäßig

Mehrere nichtstrukturierte Sprachen, solcher als (frühe Versionen) GRUNDLEGEND, COBOL und Fortran stelle ich nur globale Variablen zur Verfügung. Fortran II hat Unterprogramme mit lokalen Variablen und ÜBLICH für globale Variablen eingeführt. Genannte ALLGEMEINE Gruppen globals etwas wie namespaces. Variablen sind standardmäßig in HERVOR, Lua und die meisten Befehl-Schalen global.

Andere Sprachen

  • In der Pythonschlange kann eine globale Variable überall mit dem Schlüsselwort erklärt werden.
  • Die globalen Variablen des Rubins sind durch '' sigil bemerkenswert. Mehrere vorherbestimmte globals bestehen, zum Beispiel ist der aktuelle Prozess-Personalausweis.

Siehe auch

  • Variablen
  • Statische Variable
  • Außenvariable
  • Singleton-Muster
  • Lokale Variable
  • Nichtlokale Variable

GLAS (Dateiformat) / Chinesisches Studentenschutzgesetz von 1992
Impressum & Datenschutz