2016-04-07 7 views
-1

In C++ ist es ratsam, globale Variablen im Hauptprogramm oder vor allem anderen zu deklarieren? Ich meine, was ist der Unterschied zwischenSoll ich eine Variable innerhalb oder außerhalb der Hauptfunktion deklarieren?

#include <iostream> 

int variable; 

int main() 
{ //my program 
    return 0; 
} 

und

#include <iostream> 

int main() 
{ 
    int variable; 
    //my program 
    return 0; 
} 

In diesem Fall sollte ich die man verwenden?

+4

Sie sollten Variablen außerhalb von Funktionen fast nie deklarieren. Es ist eine schlechte Übung, die zu fragwürdigen Designs führt. –

+0

@ πάνταῥεῖ, stimme ich nicht unbedingt mit duplizieren überein. OP scheint zu fragen: "Was ist was", nicht "was ist besser". Aus der Frage selbst ist nicht klar, ob OP versteht, was die globale Variable ist. Wählen, um wieder zu öffnen. – SergeyA

+0

@ n.m., Ist es wichtig, das zu STL-Implementoren zu sagen? – SergeyA

Antwort

6

Im ersten Fall ist variable von allen anderen Funktionen in der Datei aus zugänglich (d. H. Es hat einen globalen Gültigkeitsbereich), wohingegen im zweiten Fall nur innerhalb von main zugegriffen werden kann. Im Allgemeinen ist es am besten, die Menge an globalen Variablen, die Sie verwenden, auf ein absolutes Minimum zu beschränken, um zu vermeiden, den Variablenraum zu verschmutzen (neben anderen Gründen).

Beispiel:

Lokale zur Haupt,

int main(void) { 
    int v; 
    foo(); 
    return 0; 
} 

void foo() { 
    v = 5; // compiler error: v not declared in this scope 
} 

Global,

int v; 
int main(void) { 
    foo(); 
    return 0; 
} 

void foo() { 
    v = 5; // compiles, v declared globally 
} 
+2

Der Vorschlag ist richtig, aber der Grund (Verschmutzung des Variablenraums) ist wahrscheinlich in der Liste der Gründe gering. – SergeyA

+0

Es tut mir leid, ich war verwirrt zwischen einer globalen Variable und einer lokalen Variable in der Hauptsache, die immer noch lokal ist. –

0

variable in ersten Fall ist eine globale Variable. Es kann von anderen Funktionen als und einschließlich zugegriffen werden, main(); ist garantiert zu leben, bis das Programm ausgeführt wird; und wird vor der ersten Verwendung auf 0 gesetzt. Im zweiten Beispiel ist variable eine lokale Variable für die Funktion. Es wird nur dann initialisiert, wenn es vom Programmierer eingestellt wurde. Es kann nur innerhalb von main() zugegriffen werden, und es wird gelöscht, bevor main() beendet wird. Dieser letzte Punkt ist nicht besonders wichtig für main(), ist aber viel wichtiger für andere Funktionen.

Verwandte Themen