staticとexternの使用
1295 ワード
1、局部変数を修飾する
staticはローカル変数を修飾し、このローカル変数は静的データ領域に格納され、プログラム実行全体が終了するまでライフサイクルが続くが、役割ドメインは文ブロックに限られる.
特に,staticで局所変数を修飾すると,この変数は初回運転時のみ初期化動作を行い,1回のみ行う.
プログラム実行結果:2 3
静的局所変数に対して初期化を行うと、整形変数システムに対して自動的に0が付与され、文字配列に対して自動的に'0'が付与.
2、グローバル変数の修飾
グローバル変数の場合、元のソースファイルにアクセスしたり、同じプロジェクトの他のソースファイルにアクセスしたりできます(externで宣言するだけです).
次のようになります.
staticはローカル変数を修飾し、このローカル変数は静的データ領域に格納され、プログラム実行全体が終了するまでライフサイクルが続くが、役割ドメインは文ブロックに限られる.
特に,staticで局所変数を修飾すると,この変数は初回運転時のみ初期化動作を行い,1回のみ行う.
#include
void fun()
{
static int a=1;
a++;
printf("%d
",a);
}
int main(void)
{
fun();
fun();
return 0;
}
プログラム実行結果:2 3
静的局所変数に対して初期化を行うと、整形変数システムに対して自動的に0が付与され、文字配列に対して自動的に'0'が付与.
2、グローバル変数の修飾
グローバル変数の場合、元のソースファイルにアクセスしたり、同じプロジェクトの他のソースファイルにアクセスしたりできます(externで宣言するだけです).
次のようになります.
// file1.c int a=1; file2.c #include
extern int a; int main(void) { printf("%d\",a); return 0; }
実行結果は1
ただしfile 1.cではint a=1をstatic int a=1に変更する.
ではfile 2.cは変数aにアクセスできません.
なぜならstaticでグローバル変数を修飾してその役割ドメインの範囲を変更し、元のエンジニアリング全体の可視化からソースファイルの可視化に変更したからです.
3、修飾関数
staticで関数を修飾すると,状況は修飾グローバル変数と大きく異なり,関数の役割ドメインを変化させる.
二.C++のstatic
C++のstaticには他の機能もあり、クラスの関数をC++でstaticで修飾すると、その関数はクラスに属し、このような特定のオブジェクトに属していないことを示します.クラス内の変数をstatic修飾すると、その変数がクラスおよびそのすべてのオブジェクトのすべてであることを示します.ストレージスペースには1つのコピーしか存在しません.クラスとオブジェクトで呼び出すことができます.