ホームページ  >  記事  >  php教程  >  グローバル変数とexternについて詳しく解説

グローバル変数とexternについて詳しく解説

高洛峰
高洛峰オリジナル
2016-12-19 14:42:171517ブラウズ

宣言と定義

まず宣言と定義について話しましょう

宣言は変数の名前を指すだけであり、定義は変数の名前を指すのではありません。定義に Declare

extern int i; //変数 i が割り当てられているため、まだ使用できません。次の 3 つの状況が発生する可能性があります。 Once

int i; //変数 i が定義され、スペースを割り当てた後、

extern int a =0 //グローバル変数 a を定義し、それに初期値を与えます

int a =0;グローバル変数 a に初期値を与えます


注: 変数はプログラム内で複数回宣言できますが、定義できるのは 1 回だけです。

グローバル変数: 関数内で定義された変数はローカル変数と呼ばれ、そのスコープは定義時点から関数の終わりまでです。関数の外で定義された変数はグローバル変数と呼ばれ、そのスコープは定義時点からです。ファイルの最後まで。

グローバル変数であってもローカル変数であっても、スコープは定義した場所から始まります


extern

externはグローバル変数の宣言に使用されます

#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

他のヘッダーに変数や関数を含めるには#includeを使用してくださいファイル宣言、なぜ extern キーワードが必要なのでしょうか?グローバル変数または関数 a を参照したい場合は、ソース ファイルに #includef309a191f3373e0d27442a5a200f12ba を直接含める必要があります (xxx.h には 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;
}

出力:

temp1 is1000

temp4 is400

temp3 is100


temp1: test.cpp int で宣言temp1=1000、main.cpp で temp1 を使用、最初に temp1 が外部変数であることを宣言します

temp2: test.h で定義、main.cpp と test.cpp の両方に test.h が含まれており、temp2 定義の重複が発生します。プログラムをコメントアウトしてコンパイルします

temp3: test.h で宣言、test.cpp で定義、main.cpp で使用します

temp4: const のデフォルトは、グローバルに宣言されている場合でもローカル変数に設定され、初期値は必須です定義時に割り当てられます。外部から参照したい場合は、 extern を追加する必要があります

つまり、原則は次のとおりです。他のファイルでグローバル変数を使用したい場合は、 extern 型の変数名を定義する必要があります。そうすれば、それを使用できます

const 変数は、定義の前に他のファイルで使用されたい extern を追加する必要があります


グローバル変数と extern 関連の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。