ポインタ変数の正体


ポインタ変数の概要

 前回は3次元配列について解説しました。今回はプログラミング最難関と言われるポインタについて記載します。まずポインタのイメージは下記資料となります。

変数は値、文字、つまり直接データを入れる箱でしたが、ポインタ変数はメモリのアドレス番号が入ります。こうすることでポインタ変数を見にいくとアドレス番号のデータを見にいきます。これを参照といいます。宝探しで宝箱を見つけたけど中身はお宝ではなく✖️印のついた地図が入っていて、地図の✖️の場所を探すとお宝が見つかったという状況とよく似ています。下記がテストコードです。

C言語テストコード

#include <stdio.h>

//ポインタ変数テストプログラム
int main()
{
    int *p;  //ポインタ変数を宣言
    int n=10;
    p=&n;    //nのアドレスをpに代入

    printf("&n=%p\n",&n);  //nのアドレス
    printf("p=%p\n",p);  //pに入っているnのアドレス
    printf("&p=%p\n",&p);  //pのアドレス
    printf("n=%d\n",n);  //nの値
    printf("*p=%d\n",*p);  //pに入っているアドレスを見に行く

    return 0;
}

&n=000000000061FE14
p=000000000061FE14
&p=000000000061FE18
n=10
*p=10
 実行すると以上の様に表示されたと思います。*pの出力はnに代入された10と表示されます。これがイメージ資料で解説した参照です。余談ですがC言語では変数の前に&マークを付けるとその変数のメモリアドレスを表します。そしてそのメモリアドレスは変数を宣言した時に割り当てられます。
 VBAでは上記コードの様なポインタ変数というものはありませんが似たようなことはできます。なのでまずはポインタ変数を使った参照のイメージをなんとなく掴むことが大切です。次回は引数でポインタを使用する場合を解説します。


コメントを残す