第11講 ポインタの学習
第2話 ポインタとは?
第11講は、小学生からエンジニアまでのc言語入門のページに少し手を加えて、
ほぼそのまま再利用しています。


ポインタは、C言語を魅惑的なものにしていると同時に、
初心者にとって大きな壁でもあります。
ポインタとは、簡単にいうと、
『箱の住所を代入できる箱』
です。
えっ?!
そんなこといわれるとますます謎めいていますね。
もう少し正確にいうと、
『変数のアドレスを納める変数』
です。
ますます謎めいています。

いままで変数を箱と比喩してきました。
ですが、正確にいうとデータを収めるメモリです。
メモリとは記憶装置のことです。
記憶装置には、ハーディスクや半導体メモリなどがありますが、
いずれにしろ記憶装置のある場所をデータを収納する場所として指定しています。
記憶装置の場所を示すのがアドレス(住所)です。
変数型(データ型)によって、
1つの変数に割り当てられる場所の大きさは異なってきますが、
データ型の容量の大きさに従った幅でメモリ
(この場合は記憶装置ではなく記憶容量
メモリは記憶装置という意味と記憶容量という意味があります。
さらに、記憶媒体=メディアつまり記憶を載せるものという意味もあります。
記憶媒体という表現がわかりにくいと思いますが、
例えば、皆さんが授業中に書くノートも記憶媒体=メディアの1つです。
記録を載せておくもの=記憶を書いておくものが記憶媒体です。)
が割り振られます。
例えば、int型であれば4バイト(メモリ=記憶容量の単位)の記憶容量がありますので、
  int a;
であれば、aの記憶の場所として1000〜1003
(うっかりするとそれでは3バイト分しかないと考えてしまいますが、
1000,1001,1002,1003で4バイト分ですよ。
ですが、1000〜1004と表記することもあります。
このときは1001以上1004以下を表しています。
ですから、1001,1002,1003,1004が対象範囲です。
ポインタが収納するアドレスは、
対象範囲1001,1002,1003,1004の1つ手前のアドレス1000です。
ですから、1000〜1004の表記となります。)
までが割り振られます。
メモリ(記憶媒体=記憶するもの)には番地があり、
それが数字(正確には16進数表示)で示されています。
つまり、メモリ(記憶媒体)の場所を数字による番地で示しているのです。


説明の補足のために
VC++ C言語 C++ 入門 初心者 基礎から応用まで
の該当部分をそのまま引用します。

変数iとは何でしょうか。

今まで箱のイメージで説明してきましたが、
正確に言うと、メモリの番地が割り当てられている、のです。
int i;と宣言し場合、

例えば、メモリーの番地の1001から1004をiのメモリー領域にあてるのです。
int型は、4バイトなので4飛びになっています。

char i;と宣言した場合は、char型は1バイトなので
となります。
double i;なら8バイトで
となります。

この引用ではは1001以上1004未満を表しています。


もし、メモリの住所である1000(これは対象範囲の1つ手前のアドレス)等を収納できる箱(変数)があったら・・・
実は、とても便利なのです。
『コンピュータの仕組みに応じたプログラミングが出来る!』
出来ることがC言語の魅力だといいましたが、
このポインタ(変数の住所を収納する変数)こそが
その芸当が出来る最大の理由です。
どうしてですか。
プログラムって結局箱(変数)と社員(関数)から出来ています。
そして、変数にも関数にもアドレスがあるのです。
つまり、どの変数にもどの関数にも踊る舞台が指定されているのです。
A市民会館小ホール1におけるステージの一番前の一番左側のように。
変数や関数が活躍する場所を知って、
コントロールできたら、とても大きいのです。
それぞれの役者(変数や関数)がどこで仕事をしているのかを知っていれば、
その役者の監督であるプログラマーにとってどれだけ仕事がしやすいでしょうか。
メモリ(記憶媒体)のアドレスを管理することによって、
変数や関数を自由に操れる!
のです。
プログラマーの動かす駒がどこにあるか、
それを知っていればこれほど強力なことはありませんね。

変数や関数のアドレスを収納する箱(変数)をポインタというのです。
謎めいた『変数のアドレスを納める変数』の意味が少しは分かったのではありませんか。
でも、まだまだよく分からない・・・ですね。
当然です。
原理をいくら詳しく説明されても、
人間は納得できないものです。
納得できるためには、
実際にポインタを操作することが必要です。
プログラミングには、
習うより慣れろ!
の部分があるのです。
もっとも数学をはじめてして、どの学問分野にもいえることですけどね。

具体的な話を第3話以降でしていくことにしましょう。





第1話へ   第3話へ

第2部目次に戻る  第1部目次に戻る

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
ecliqse c++ 入門
魔方陣 数独で学ぶ VBA 入門

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