第8講 関数の学習その2  
第2話 第1話コードの謎

ところで皆さん、前話のコード

#include<iostream>
using namespace std;
using namespace System;
void f();
void g();
int main(){
   f();
   g();
   f();
}
void f(){
   int i;
   cout<<i<<endl;
}
void g(){
   int i;
   i=1;
}
初心者
を見て不思議に思いませんでしたか。
もし、不思議に感じたとすればあなたのプログラミングのセンスはかなりのものです。
というのは、例えば次ぎようにタイプすると、
#include<iostream>
using namespace std;
using namespace System;
void f();
int main(){
   f();
}
void f(){
   int i;
   i=2;
   cout<<i<<endl;
   int i;
   i=2;
   cout<<i<<endl;
}

エラー 1 error C2370: 'i' : 再定義 ; 異なるストレージ クラスです。 C:\VC++2010\d6\g\g\a.cpp 12

ビルドエラーをします。要するに、重複して変数を宣言することはできないのです。
ところが、
#include<iostream>
using namespace std;
using namespace System;
void f();
int main(){
   f();
   f();
}
void f(){
   int i;
   i=2;
   cout<<i<<endl;
}
だと、
謎
何の問題もなくビルド=実行ができます。
でも、これも2回ダブって
   int i;
を宣言したことにならないのでしょうか。
#include<iostream>
using namespace std;
using namespace System;
void f();
void g();
int main(){
   f();
   g();
   f();
}
void f(){
   int i;
   cout<<i<<endl;
}
void g(){
   int i;
   i=1;
}
これも2回宣言していませんか。

どうです。
不思議に感じていなかった方も、不思議な気がしてきませんか。
答えは次話で。






第1話へ 第3話へ


戻る


VB講義へ
VB講義基礎へ

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