Was ist der Unterschied zwischen statischem int a und int a? [Duplikat]

8

Was ist der Unterschied zwischen den Aussagen 1 und 2: -

%Vor%

Danke für die Hilfe.

    
Muse 25.01.2011, 09:56
quelle

6 Antworten

5

Eine static globale Variable ist lokal für die Übersetzungseinheit , in der sie definiert ist. Wenn Sie static int a; in zwei verschiedenen Übersetzungseinheiten definieren, werden zwei unabhängige Variablen erstellt. Wenn Sie eine nicht statische globale Variable int b; in zwei Übersetzungseinheiten definieren, tritt ein Linkerfehler auf (Sie können jedoch extern int b; in einer der beiden Übersetzungseinheiten verwenden, um dem Linker mitzuteilen, dass er die globale Variable verwenden soll.) die andere Übersetzungseinheit).

    
Victor Nicollet 25.01.2011, 10:01
quelle
6

Beide sind Variablendefinitionen, das static -Schlüsselwort, das auf eine Variable im "globalen Deklarationsbereich" angewendet wird, beschränkt diese globale Variable jedoch nur auf die Übersetzungseinheit , in der sie definiert ist .

    
SiegeX 25.01.2011 09:59
quelle
3

Sie sind beide für die gesamte Lebensdauer des Programms in Erinnerung. Die Variable, die als statisch deklariert ist, hat nur einen Gültigkeitsbereich in der Datei, in der sie deklariert ist, da auf die Variable, die ohne static deklariert wurde, von anderen Dateien mit einer externen Deklaration zugegriffen werden kann.

Ursprüngliche Quelle - Ссылка

    
Sachin Shanbhag 25.01.2011 10:01
quelle
2
Auf

static int a kann nur innerhalb dieser Datei zugegriffen werden. Auf int b kann mit extern int b aus einer anderen Datei zugegriffen werden.

    
Marlon 25.01.2011 10:00
quelle
1

Die Lebensdauer einer statischen Variable erstreckt sich über die gesamte Lebensdauer des Programms. Es gelten jedoch weiterhin Bereichsregeln.

Wenn Sie Ihre statische Variable außerhalb einer Methode (normalerweise am Anfang der Klasse) definieren, steht Ihre Variable von überall innerhalb dieser Klasse zur Verfügung.

Sie können den Wert dieser Objekte nicht ändern. Sie werden normalerweise zum Speichern von Dingen wie API-Schlüsseln verwendet.

    
Aurum Aquila 25.01.2011 10:03
quelle
1
%Vor%

a hat interne Verknüpfungen. b hat eine externe Verknüpfung.

C99 6.2.2

  

6.2.2 Verknüpfungen von Identifikatoren

     
  • 1) Ein Identifier, der in verschiedenen Bereichen oder im gleichen Umfang mehr als einmal deklariert werden kann   gemacht, um auf dasselbe Objekt oder dieselbe Funktion durch einen als Verknüpfung bezeichneten Prozess Bezug zu nehmen. Es gibt   drei Arten von Verknüpfungen: extern, intern und keine.

  •   
  • 2) In der Menge der Übersetzungseinheiten und Bibliotheken, die jeweils ein ganzes Programm bilden   Deklaration eines bestimmten Identifikators mit externer Verknüpfung bezeichnet das gleiche Objekt oder   Funktion. Innerhalb einer Übersetzungseinheit jede Deklaration eines Identifikators mit internem   Verknüpfung bezeichnet dasselbe Objekt oder dieselbe Funktion. Jede Deklaration eines Identifikators mit Nr   Verknüpfung bezeichnet eine eindeutige Entität.

  •   
  • 3) Wenn die Deklaration eines Dateibereichsbezeichners für ein Objekt oder eine Funktion den Speicher enthält,   Klassenspezi fi kation statisch, der Identifizierer hat eine interne Verbindung .

  •   
    
Prasoon Saurav 25.01.2011 10:08
quelle

Tags und Links