第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は別の変数なのです。
メモリーに常駐していますが、別の場所に常駐しているわけです。
VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)