ポインタとは
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
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となります。
参考:ポインタ
スポンサーリンク
>> 次の記事 : 定数ポインタ
- - 関連記事 -
- ツリー
- 二重リンクリスト
- リンクリストの指定した箇所に要素を追加
- リンクリスト
- delete演算子
- new演算子でオブジェクト生成
- new演算子・動的メモリの割り当て
- 構造体とポインタ
- 配列のポインタ宣言
- 配列とポインタ・アドレスのインクリメントを確認
- 定数ポインタ
スポンサーリンク