検索
ホームページphp教程PHP开发グローバル変数とexternについて詳しく解説

宣言と定義

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

宣言は変数の名前を指すだけであり、定義は変数の名前を指すのではありません。定義に 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 を参照したい場合は、ソース ファイルに #include を直接含める必要があります (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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境