第7講 ポインタ
第9話 なぜポインタというの?
(以下は初心者の方には難しいと思いますので、
読み飛ばすか、軽く読んでそういうものなんだと受け取るかにして下さい。)

ポインタは箱の住所を収納する箱です。
第3話に扱ったコードを
#include<stdio.h>
#include<stdlib.h> //malloc()が使えるようにインクルード
void f(); //関数f()のプロトタイプ宣言
int main() {
  f(); //関数f()に仕事を命じている
  return(0);
}
void f() {
  int *b = (int *)malloc(sizeof(int)); //ポインタbの宣言と初期化
  *b = 1; //箱*bに1を入れる
  printf("*b =%d\n", *b); //箱*bの中身を表示
  printf("b =%d\n", b); //箱*bの住所bを表示
}
001
を例にすると、
002
(メモリは毎回変わりますので、001と一致していません。
ですから、上の数字は仮の数字です。)
bは住所によって、*bを指し示しめしています。
そこで、bを*bへのポインタという言い方をします。

では、
#include<stdio.h>
#include<stdlib.h> //malloc()が使えるようにインクルード
void f(); //関数f()のプロトタイプ宣言
int main() {
  f(); //関数f()に仕事を命じている
  return(0);
}
void f() {
  int *b = (int *)malloc(sizeof(int )); //ポインタbの宣言と初期化
  int **c;
  *b = 1;
  printf("箱*bの中身 =%d\n", *b);
  printf("箱*bの住所 =%d\n", b);
  c = &b;
  printf("箱bの住所 =%d\n", c);
}
の場合はどうでしょうか。
実は住所を入れる箱bも住所を持っています。
bも変数にすぎないのでメモリ番地を持っているのです。
003
ポインタ変数(メモリアドレス=メモリ番地を収納する箱)自体もメモリ番地を持っています。
(もちろんc自身にもメモリ番地があります。)
cはbの住所によってポインタbを指し示していますので、
ポインタへのポインタといいます。
私自身は〜へのポインタという表現は好きではありませんから、
基本、本サイトではそのような表現は取りませんが、
もし他のサイトや書籍で見かけたときは、
この話を参考にして下さい。

さて、C言語の魔法の話が出来る段階まで来ました。
箱は渡すことは出来ないのに、
仕事を依頼した人にその箱の中身を変えてもらうことの出来る不思議な魔法について、
第8講においていよいよ説明しましょう。



第8話へ   第8講第1話へ

002

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

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