第7講 ポインタ
第2話 ポインタの簡単な実例
本講義の方針は、先に事例を示すですから、
いつもの通り具体例を示してから、
解説していくことにしましょう。
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
void f(); //関数f()のプロトタイプ宣言
int main() {
  f(); //関数f()に仕事を命じている
  return(0);
}
void f() {
  int a, *b; //変数aとポインタbの宣言
  a = 1; //箱aに1を入れる
  b = &a; //住所を収納する箱bに箱aの住所を代入
  cout << "a =" << a << endl; //箱aの中身を表示
  cout << "&a =" << &a << endl; //箱aの住所を表示
  cout << "b =" << b << endl; //住所を収納する箱の中身を表示
}

実行結果
001

(住所=アドレスは毎回変わりますので、
皆さんの実行結果とは同じではありません。
アドレスは16進数表示になっています。)

変数のことを今まで箱と説明してきましたが、
正確に説明すると、メモリです。
記憶装置のある場所に一定容量のメモリを割り振り、
そのメモリにデータ書き込むものが変数です。
つまり、変数には住所=アドレスがあるのです。
&aは変数の住所を意味します。
記憶装置の00C3FB10が変数aの住所というわけです。
変数bは変数の住所を収納する変数です。
箱の住所を収納する箱がC言語には用意されていて、
箱の住所を収納する箱をポインタ変数というのです。
  int *b;
と宣言すると、ポインタ変数bが用意されます。
つまり、箱の住所を収納する箱bが用意されるのです。
  int b;
と宣言したのでは、ただのデータを収める箱bが定義されてしまいますので、
  int *b;
によって、はじめて住所を収納する箱bが用意できるとC言語は定めているのです。
先のコードに1行を加えて、
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
void f(); //関数f()のプロトタイプ宣言
int main() {
  f(); //関数f()に仕事を命じている
  return(0);
}
void f() {
  int a, *b; //変数aとポインタbの宣言
  a = 1; //箱aに1を入れる
  b = &a; //住所を収納する箱bに箱aの住所を代入
  cout << "a  =" << a << endl; //箱aの中身を表示
  cout << "&a =" << &a << endl; //箱aの住所を表示
  cout << "b  =" << b << endl; //住所を収納する箱の中身を表示
  
cout << "*b =" << *b << endl; //住所の箱に入っている中身を表示
}
とすると実行結果は、
002
(アドレスは毎回変わるのでしたね。)
するとaと*bは同じということになります。

*と&の関係を表にしておくと

  箱の住所 
int a;と宣言  a &a 
int *b;と宣言   *b

ということになります。
つまり、*bは002住所002AF914の箱に入っている中身の値を意味するのです。

でしたら、コードを次のように書き換えることは出来るでしょうか。
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
void f(); //関数f()のプロトタイプ宣言
int main() {
  f(); //関数f()に仕事を命じている
  return(0);
}
void f() {
  int *b; //ポインタbの宣言
  *b = 1; //箱*bに1を入れる
  cout << "b =" << b << endl; //アドレスを入れる箱bの中身を表示
  cout << "*b=" << *b << endl; //箱bの中身=アドレスにある箱の中身の表示
}
001
コードには赤い波線が表示されていませんので、
問題なさそうですが、−−−





第1話へ   第3話へ

002

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

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