Was ist der Unterschied zwischen lokalen statischen und globalen statischen Variablen?


Beste Antwort

global & lokal: bezieht sich auf den Umfang, dh wo verwendet werden kann

statisch: bezieht sich auf Zeit und Volatilität, dh wie lange verwendet werden kann

Die statische Variable

im C & C ++ – Programm wird nur einmal definiert (zugewiesener Speicher & Anfangswert Null), selbst die Programmsteuerung führt die Deklarationsanweisung erneut aus. Wert und Lebensdauer der statischen Variablen bleiben bis zum Ende des Programms erhalten, können jedoch innerhalb des Gültigkeitsbereichs verwendet werden.

void staticTest(){

static int i;

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

i++;

}

void main(){

staticTest();

staticTest();

staticTest();

}

Ausgabe:

0

1

2

Im obigen Beispiel wird die Verwendung lokaler statischer Variablen demonstriert.

globale statische: Sie können eine statische Variable im globalen Bereich deklarieren. Sie ist fast identisch mit anderen globalen Variablen, außer dass der Anfangswert Null ist, wenn Sie ihr keinen Wert zuweisen.

Antwort

Lokale statische Aufladung:

  • Der Standardwert ist Null.
  • Wird im Datenabschnitt gespeichert (bss oder initialisiert) des Speichers
  • Umfang oder Sichtbarkeit liegt innerhalb des Blocks oder einer Funktion.
  • Die Lebensdauer der lokalen statischen Variablen beginnt und endet nur mit dem Programm.

Global static:

  • Wenn eine globale Variable statisch ist, befindet sich der Bereich oder die Sichtbarkeit nur in dieser Datei, selbst wenn extern in einer anderen Datei verwendet wird, funktioniert dies nicht . Es gibt einen Verknüpfungsfehler.

Beispiel 1:

static int a=20;

void xyz()

{

printf("\%d, ", a);

a = 100;

}

int main()

{

printf("\%d, ", a);

{

static int a = 10;

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

xyz();

}

printf("\%d", a);

}

// Output is 20, 10, 20, 100

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.