Heim >php教程 >PHP开发 >Detaillierte Erläuterung globaler und externer Variablen

Detaillierte Erläuterung globaler und externer Variablen

高洛峰
高洛峰Original
2016-12-19 14:42:171575Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn