Deklaration und Definition
Lassen Sie uns zunächst über Deklaration und Definition sprechen
Deklaration ist nicht gleich Definition. Die Deklaration weist nur auf den Namen der Variablen hin und weist keinen Speicher zu Platz dafür; Die Definition weist darauf hin, dass der Variablenname auch Speicherplatz für die Variable zuweist.
extern int i; //Die Variable i ist deklariert, aber es wird kein Speicherplatz zugewiesen kann noch nicht verwendet werden. Die folgenden drei Situationen können nur einmal vorkommen:
int i; //Variable i ist definiert und es ist Platz für die Verwendung von
extern int a =0 //Definieren Sie eine globale Variable a und geben Sie ihr einen Anfangswert
int a =0;//Definieren Sie eine globale Variable a und geben Sie ihr den Anfangswert
Hinweis: Eine Variable kann im Programm mehrmals deklariert, aber nur einmal definiert werden.
Globale Variablen: Variablen, die innerhalb einer Funktion definiert sind, werden lokale Variablen genannt, und ihr Gültigkeitsbereich reicht vom Definitionspunkt bis zum Ende der Funktion. Variablen, die außerhalb der Funktion definiert sind, werden globale Variablen genannt, und ihr Gültigkeitsbereich reicht von vom Definitionspunkt bis zum Ende der Funktion bis zum Ende der Datei.
Ob es sich um eine globale Variable oder eine lokale Variable handelt, der Gültigkeitsbereich beginnt an der Definitionsstelle
extern
extern wird verwendet Um globale Variablen zu deklarieren, kann
#include<iostream>using namespace std;int main(){ extern int a; cout<<a<<endl; //int a=5; this is wrong , a should be a global variable getchar(); return 0; }int a=5;//global variable
Deklarationen von Variablen und Funktionen in andere Header-Dateien mit #include einschließen. Warum brauchen wir das Schlüsselwort extern? Wenn ich auf eine globale Variable oder Funktion a verweisen möchte, muss ich nur #includef309a191f3373e0d27442a5a200f12ba direkt in die Quelldatei einfügen (xxx.h enthält die Deklaration von a).
test.h
#include<iostream> using namespace std; int changea(); //int temp2=1; 如果在此定义temp2的情况下,main.cpp和test.cpp都包含了test.h,会造成temp2的重复定义 extern int temp3;
test.cpp
#include "test.h" int temp1=1000; //int temp2=10; 如果不注释掉会出错 int temp3=100; extern const int temp4=400;
main.cpp
#include <cstdlib>#include <iostream>#include "test.h"using namespace std;int main(int argc, char *argv[]){ extern int temp1; cout<<"temp1 is"<<temp1<<endl; extern int temp4; cout<<"temp4 is"<<temp4<<endl; //extern int temp2; //cout<<"temp2 is"<<temp2<<endl; cout<<"temp3 is"<<temp3<<endl; system("PAUSE"); return EXIT_SUCCESS; }
Ausgabe:
temp1 is1000
temp4 is400
temp3 is100
temp1: deklariert in test.cpp int temp1 = 1000, temp1 in main.cpp verwenden, zuerst deklarieren, dass temp1 eine externe Variable ist
temp2: in test.h definiert, sowohl main.cpp als auch test.cpp enthalten test.h, es wird resultieren in Bei wiederholter Definition von temp2 kann das Programm durch Auskommentieren kompiliert werden
temp3: in test.h deklariert, in test.cpp definiert, in main.cpp verwendet
temp4: const default Das ist es eine lokale Variable, auch wenn sie global deklariert ist, und ihr muss bei der Definition ein Anfangswert zugewiesen werden. Wenn Sie extern darauf verweisen möchten, müssen Sie extern hinzufügen
Kurz gesagt, das Prinzip lautet: Wenn Sie eine globale Variable in anderen Dateien verwenden möchten, müssen Sie den Variablennamen des externen Typs definieren und dann verwenden
. Wenn die const-Variable in anderen Dateien verwendet werden soll, müssen Sie extern
vor der Definition hinzufügen und externe verwandte Artikel, achten Sie bitte auf die chinesische PHP-Website!