第8講 関数の学習その2  
第4話 静的変数
#include<iostream>
using namespace std;
using namespace System;
static void f();
static void g();
int main(){
   f();
   g();
}
static void f(){
   static int i;
   i=2;
   cout<<i<<endl;
}
static void g(){
   i=3;
   cout<<i<<endl;

}

残念ながら、

エラー 1 error C2065: 'i' : 定義されていない識別子です。 C:\VC++2010\d6\g\g\a.cpp 16
エラー 2 error C2065: 'i' : 定義されていない識別子です。 C:\VC++2010\d6\g\g\a.cpp 17

とビルドエラーをします。説明してきませんでしたが、最後の16と17は、16行目と17行目
   i=3;
   cout<<i<<endl;

に問題があるという意味です。

静的関数、静的変数にしてメモリーに常駐させてもだめです。
理由は、変数は関数の範囲の中でのみ有効であるからです。
#include<iostream>
using namespace std;
using namespace System;
static void f();
static void g();
int main(){
   f();
   g();
}
static void f(){
   static int i;
   i=2;
   cout<<i<<endl;
}
static void g(){
   static int i;
   cout<<i<<endl;
}
と変更してビルドすると、
入門
です。つまり、静的変数であって同名でも、fの中のiとgの中のiは別の変数なのです。
メモリーに常駐していますが、別の場所に常駐しているわけです。



第3話へ 第5話へ


戻る


VB講義へ
VB講義基礎へ

vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)