第7講 ポインタの学習
第2話 ポインタの実際

いろいろ説明するより、
実際にポインタを体験してみてから、
ポインタについて解説する方が早いと思います。
次のコードを組んでみてください。
#include<iostream>
#include <stdlib.h>
using namespace std;
void f();
void g();
void main(){
   f();
   g();
}
void f(){
   int x[5];
   for(int i=0;i<5;i++)x[i]=i+1;
   for(int i=0;i<5;i++)cout<<x[i]<<" ";
   cout<<endl;
}
void g(){
   int *x=(int *)malloc(sizeof(int)*5);
   for(int i=0;i<5;i++)x[i]=i+1;
   for(int i=0;i<5;i++)cout<<x[i]<<" ";
   cout<<endl;
}

すると、次のような実行結果になります。
f
つまり、
   int *x=(int *)malloc(sizeof(int)*5);
と宣言することは、
   int x[5];
と宣言することと同じなのです。
尚、#include <stdlib.h>はmallocを使うために必要な
ヘッダファイルstdlib.hをインクルードしています。
さらに、コードを次のように書き換えてください。
#include<iostream>
#include <stdlib.h>
using namespace std;
void f();
void g();
void main(){
   f();
   g();
}
void f(){
   int x[5];
   for(int i=0;i<5;i++)
*(x+i)=i+1;
   for(int i=0;i<5;i++)cout<<
*(x+i)<<" ";
   cout<<endl;
}
void g(){
   int *x=(int *)malloc(sizeof(int)*5);
   for(int i=0;i<5;i++)*(x+i)=i+1;
   for(int i=0;i<5;i++)cout<<
*(x+i)<<" ";
   cout<<endl;
}
実行結果は同じ
f

これはいったいどういうことでしょうか。
皆さんからすると謎だらけです。
次話では、ポインタとは何か説明して、
一つ一つ謎を解いていくことにしましょう。



第1話へ 第3話へ

a

魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ