ポインタとは

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

ポインタとは

スポンサーリンク

ポインタとは、変数のアドレスを保持する変数のことです。
このことから、ポインタはアドレス変数とも呼ばれます。
アドレスとは、メモリ上にある番地(場所を表す)のことであり、変数のために確保された領域を表します。

int a = 5;

この場合、変数aのためのメモリー上の番地(仮に0x1000とします)が領域として確保され、変数aは5の値を持ちます。

a     変数aの値(6)を示す。
&a    アドレス。変数aのアドレス(0x1000)を示す。(変数からポインタを取得)
*a_ptr  逆参照。ポインタa_ptrのアドレスにある値を取得。(ポインタから値を取得)

ポインタを表す場合、変数名の最後に「_ptr」と付けると、ポインタ(アドレス変数)であることが明白となります。

int a = 5;   // 変数の宣言と初期化
int *a_ptr;    // ポインタa_ptrの宣言
int b;    // 代入のための変数を容易
 
a_ptr = &a;    // aのアドレスをポインタa_ptrに代入
b = *a_ptr;    // a_ptrのアドレスにある値(5)をbに代入
*a_ptr = 10;    // a_ptrのアドレスの中身に値(10)を代入

以下の書き方は、注意です。

*a;    // aは、ポインタでないので、この記述は許可されません。
&a_ptr;    // a_ptrは、ポインタなので、ポインタのポインタとなる。あまり使わない。

ポインタの動作確認

ポインタの動作を実験してみます。

#include <iostream>
 
int main() {
    int a = 5;   // 変数の宣言と初期化
    int *a_ptr;    // ポインタa_ptrの宣言
    int b;    // 代入のための変数を容易
 
    a_ptr = &a;    // aのアドレスをポインタa_ptrに代入
    b = *a_ptr;    // a_ptrのアドレスにある値(5)をbに代入
    *a_ptr = 10;    // a_ptrのアドレスの中身に値(10)を代入。aが10となる。
 
    std::cout << "a: " << a << "\n";
    std::cout << "a_ptr: " << a_ptr << "\n";
    std::cout << "b: " << b << "\n";
    std::cout << "b_btr: " << &b << "\n";
    
    return 0;
}

実行結果。

a: 10
a_ptr: 0012F3C4
b: 5
b_btr: 0012F3C8

a_ptr = &a; // aのアドレスをポインタa_ptrに代入
上記の設定を、「ポインタa_ptrはaを指す」、または、「ポインタa_ptrはaをポイントする」と言います。
aのアドレスを表す値が、ポインタである変数a_ptrに格納されたことになります。

「*a_ptr = 10;」とポインタの値を変更することで、変数aの値が10となっていることを確認できます。

NULLという特別なポインタ

NULLは、何もポイントしないポインタであり、実際の数値は0となります。

参考:ポインタ

スポンサーリンク
 
スポンサーリンク