Globale Variable – Wikipedia

before-content-x4

In der Computerprogrammierung a Globale Variable ist eine Variable mit globalem Gültigkeitsbereich, dh sie ist im gesamten Programm sichtbar (daher zugänglich), sofern sie nicht im Schatten liegt. Die Menge aller globalen Variablen wird als bezeichnet globale Umwelt oder globaler Staat. In kompilierten Sprachen sind globale Variablen im Allgemeinen statische Variablen, deren Umfang (Lebensdauer) die gesamte Laufzeit des Programms darstellt. In interpretierten Sprachen (einschließlich Befehlszeileninterpreten) werden globale Variablen bei der Deklaration im Allgemeinen dynamisch zugewiesen, da sie nicht bekannt sind vor der Zeit.

In einigen Sprachen sind alle Variablen global oder standardmäßig global, während in den meisten modernen Sprachen Variablen einen begrenzten Bereich haben, im Allgemeinen einen lexikalischen Bereich, obwohl globale Variablen häufig verfügbar sind, indem eine Variable auf der obersten Ebene des Programms deklariert wird. In anderen Sprachen existieren jedoch keine globalen Variablen. Dies sind im Allgemeinen modulare Programmiersprachen, die eine Modulstruktur erzwingen, oder klassenbasierte objektorientierte Programmiersprachen, die eine Klassenstruktur erzwingen.

Interaktionsmechanismen mit globalen Variablen werden aufgerufen globale Umwelt (siehe auch globaler Staat) Mechanismen. Das globale Umgebungsparadigma steht im Gegensatz zum lokalen Umgebungsparadigma, bei dem alle Variablen lokal ohne gemeinsamen Speicher sind (und daher alle Interaktionen zur Nachrichtenübermittlung rekonduziert werden können).

Globale Variablen werden häufig verwendet, um Informationen zwischen Codeabschnitten zu übertragen, die keine Anrufer / Angerufene-Beziehung haben, wie z. B. gleichzeitige Threads und Signalhandler. Sprachen (einschließlich C), in denen jede Datei einen impliziten Namespace definiert, beseitigen die meisten Probleme, die bei Sprachen mit einem globalen Namespace auftreten, obwohl einige Probleme möglicherweise ohne ordnungsgemäße Kapselung bestehen bleiben. Ohne ordnungsgemäße Sperre (z. B. mit einem Mutex) ist Code mit globalen Variablen nur für schreibgeschützte Werte im geschützten Speicher threadsicher.

Umgebungsvariablen[edit]

Umgebungsvariablen sind eine Funktion, die von einigen Betriebssystemen bereitgestellt wird. Innerhalb der Shell des Betriebssystems (ksh unter Unix, bash unter Linux, COMMAND.COM unter DOS und CMD.EXE unter Windows) sind sie eine Art Variable: In Unix und verwandten Systemen wird beispielsweise eine gewöhnliche Variable zu einer Umgebungsvariablen, wenn die export Schlüsselwort wird verwendet. Andere Programmcodes als Shells müssen über API-Aufrufe darauf zugreifen, z
getenv() und setenv().

Sie sind lokal für den Prozess, in dem sie festgelegt wurden. Das heißt, wenn wir zwei Terminalfenster öffnen (zwei verschiedene Prozesse, in denen die Shell ausgeführt wird) und den Wert der Umgebungsvariablen in einem Fenster ändern, wird diese Änderung von einem anderen Fenster nicht gesehen.

Wenn ein untergeordneter Prozess erstellt wird, erbt er alle Umgebungsvariablen und ihre Werte vom übergeordneten Prozess. Wenn ein Programm ein anderes Programm aufruft, erstellt es normalerweise zuerst einen untergeordneten Prozess durch Gabeln, dann passt das untergeordnete Element die Umgebung nach Bedarf an und schließlich ersetzt sich das untergeordnete Programm durch das aufzurufende Programm. Untergeordnete Prozesse können daher keine Umgebungsvariablen verwenden, um mit ihren Kollegen zu kommunizieren, wodurch das Problem der Fernwirkung vermieden wird.

Nur global und standardmäßig global[edit]

Eine Reihe nicht strukturierter Sprachen wie (frühe Versionen von) BASIC, COBOL und Fortran I (1956) bieten nur globale Variablen. Fortran II (1958) führte Unterprogramme mit lokalen Variablen und das Schlüsselwort COMMON für den Zugriff auf globale Variablen ein. Die Verwendung von COMMON in FORTRAN wurde in FORTRAN 77 fortgesetzt.[1] und beeinflusste spätere Sprachen wie PL / SQL. Benannte GEMEINSAME Gruppen für Globals verhalten sich ähnlich wie strukturierte Namespaces.[2] Variablen sind in FORTH, Lua, Perl und den meisten Shells standardmäßig auch global.

Nach Sprache[edit]

C und C ++[edit]

Die C-Sprache hat keine global Stichwort. Variablen, die außerhalb einer Funktion deklariert wurden, haben jedoch den “Dateibereich”, was bedeutet, dass sie in der Datei sichtbar sind. Mit Dateibereich deklarierte Variablen sind zwischen ihrer Deklaration und dem Ende der Kompilierungseinheit sichtbar (.c Datei) (sofern nicht durch ein gleichnamiges Objekt in einem näheren Bereich, z. B. einer lokalen Variablen, beschattet); und sie haben implizit eine externe Verknüpfung und sind somit nicht nur für die sichtbar .c Datei oder Kompilierungseinheit mit ihren Deklarationen, aber auch mit jeder anderen Kompilierungseinheit, die zum vollständigen Programm verknüpft ist. Eine externe Verknüpfung reicht jedoch nicht aus, um eine solche Variable in anderen Dateien zu verwenden: Damit eine Kompilierungseinheit korrekt auf eine solche globale Variable zugreifen kann, muss sie ihren Typ kennen. Dies wird erreicht, indem die Variable in jeder Datei mit dem deklariert wird extern Stichwort. (Es wird sein erklärt in jeder Datei kann aber sein definiert in nur einem.) So. extern Deklarationen werden häufig in einer gemeinsam genutzten Header-Datei abgelegt, da es üblich ist, dass alle .c-Dateien in einem Projekt mindestens eine enthalten .h Datei: Die Standard-Header-Datei errno.h ist ein Beispiel dafür errno Variable, auf die alle Module in einem Projekt zugreifen können. Wenn dieser globale Zugriffsmechanismus als problematisch eingestuft wird, kann er mithilfe von deaktiviert werden static Schlüsselwort, das eine Variable auf den Dateibereich beschränkt und versucht, sie mit zu importieren extern um einen Kompilierungs- (oder Verknüpfungs-) Fehler auszulösen.[3]

Ein Beispiel für eine “globale” Variable in C:

#include 

// This is the file-scope variable (with internal linkage), visible only in
// this compilation unit.
static int shared = 3;

// This one has external linkage (not limited to this compilation unit).
extern int over_shared;

// Also internal linkage.
int over_shared_too = 2;

static void ChangeShared() {
  // Reference to the file-scope variable in a function.
  shared = 5;
}

static void LocalShadow() {
  // Local variable that will hide the global of the same name.
  int shared;

  // This will affect only the local variable and will have no effect on the
  // file-scope variable of the same name.
  shared = 1000;
}

static void ParamShadow(int shared) {
  // This will affect only the parameter and will have no effect on the file-
  // scope variable of the same name.
  shared = -shared;
}

int main() {
  // Reference to the file-scope variable.

  printf("%dn", shared);

  ChangeShared();

  printf("%dn", shared);

  LocalShadow();

  printf("%dn", shared);

  ParamShadow(1);

  printf("%dn", shared);

  return 0;
}

Da es sich bei der Variablen um eine externe Variable handelt, muss sie nicht als Parameter übergeben werden, um sie in einer anderen Funktion als main zu verwenden. Es gehört zu jeder Funktion im Modul.

Die Ausgabe wird sein:

3
5
5
5

Java[edit]

Einige Sprachen wie Java haben keine globalen Variablen. In Java sind alle Variablen, die keine lokalen Variablen sind, Felder einer Klasse. Daher liegen alle Variablen entweder im Bereich einer Klasse oder einer Methode. In Java existieren statische Felder (auch als Klassenvariablen bezeichnet) unabhängig von Instanzen der Klasse, und eine Kopie wird von allen Instanzen gemeinsam genutzt. Daher werden öffentliche statische Felder aufgrund ihres ähnlichen “Freigabe” -Verhaltens für viele der gleichen Zwecke wie globale Variablen in anderen Sprachen verwendet:

public class Global {
    public static int a;
}

PHP[edit]

PHP hat eine global Schlüsselwort und eine Reihe ungewöhnlicher Möglichkeiten zur Verwendung globaler Variablen. Außerhalb von Funktionen deklarierte Variablen haben einen Dateibereich (der für die meisten Zwecke der breiteste Bereich ist). Sie sind jedoch nur innerhalb von Funktionen zugänglich, wenn sie mit dem importiert wurden global Schlüsselwort (dh das Schlüsselwort Zugriffe globale Variablen nicht erklären Sie).

Einige vordefinierte Variablen, bekannt als Superglobale sind immer zugänglich. Sie sind alle Arrays. Ein allgemeiner Zweck ist der $GLOBALS superglobal, das alle außerhalb des Funktionsumfangs definierten Variablen enthält. Änderungen an den Elementen ändern die ursprünglichen Variablen, und durch Ergänzungen werden neue Variablen erstellt. Die Superglobalen $_POST und $_GET sind in der Webprogrammierung weit verbreitet.

Andere Sprachen[edit]

  • In Python und MATLAB kann eine globale Variable überall mit dem deklariert werden global Stichwort.[4][5]
  • Rubys globale Variablen werden durch ein ‘$Siegel. Beispielsweise gibt es eine Reihe vordefinierter Globals $$ ist die aktuelle Prozess-ID.

Siehe auch[edit]

Verweise[edit]


after-content-x4