第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;
}
すると、次のような実行結果になります。
つまり、
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;
}
実行結果は同じ
これはいったいどういうことでしょうか。
皆さんからすると謎だらけです。
次話では、ポインタとは何か説明して、
一つ一つ謎を解いていくことにしましょう。
第1話へ 第3話へ
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ