C言語入門:③-3 ポインタ【応用ロジック】

配列や文字列の理解ができると、複数のデータを扱えるようになります。

次のステップでは、それらのデータを「どこにあるか」で扱う考え方が重要になります。

その仕組みが「ポインタ」です。

本記事では、ポインタの基本的な仕組みと使い方について解説します。

本記事の目的・学習目標

学習目標は次の3点です。

ポインタとは何かを理解する
アドレスと値の関係を理解する
ポインタを使った基本的な操作ができるようになる

この記事を学ぶことで、データの「場所」を意識したプログラムが書けるようになります。

ポインタとは

ポインタとは、データの場所(アドレス)を管理する仕組みです。

これまでの変数は「値」を扱っていましたが、
ポインタは「その値がどこにあるか」を扱います。

また、ポインタを使うことで、関数の間で同じデータの場所を共有することができます。
そのため、別の関数から元のデータを直接変更することが可能になります。

ポインタを使って値にアクセスすることを間接参照といいます。

メモリアドレスとは

プログラムのデータは、コンピュータのメモリに保存されています。

このメモリには、それぞれ番号が付いており、これをアドレスと呼びます。

イメージとしては
「データが入っている場所の住所」です。

ポインタはこのアドレスを扱うことで、データそのものではなく「どこにあるか」を共有することができます。

ポインタの基本構造

ポインタは次のように定義します。

例:

ここではpというアドレスを値として持つ変数(ポインタ変数)を作成しています。

アドレスの取得(&)

変数のアドレスは「&」を使って取得します。

  • a → 値(10)
  • &a → aの場所(アドレス)
  • p → aの場所(アドレス)を指している

p = &a;ではpというポインタ変数にaのアドレスを代入している。

値の参照(*)

ポインタを使って値を取り出すには「*」を使用します。

*p は「pが指している場所の値」を意味します。

配列とポインタの関係

配列名は、先頭要素のアドレスを表します。

この配列定義をした場合、以下のような配列とアドレスの対応関係になります。

書き方は違いますが、左右で同じ意味になります。

このように、ポインタを使って配列の要素にアクセスできます。

配列を定義していれば、値もアドレスも表示できる。

まとめ

本記事では「ポインタ」について解説しました。

今回の学習内容は以下の通りです。

  • ポインタはアドレスを扱う仕組み
  • &でアドレスを取得できる
  • *で値を取り出せる
  • 配列はポインタとして扱える

ポインタを理解することで、より柔軟なデータ操作ができるようになります。

本記事で登場した用語

本シリーズでは、記事で登場する専門用語を補助知識カテゴリの「④-4 用語辞典」 にまとめています。

①ポインタ

データのアドレスを保持する変数

②アドレス

データが保存されている場所の番号

③参照(*)

ポインタから値を取り出す操作

④アドレス取得(&)

変数のアドレスを取得する操作

⑤間接参照

ポインタを使って値にアクセスすること

⑥*ポインタ名

「(ポインタ名)が指している場所にある値」を意味する

関連記事

次の記事では、ハンドル化 について解説します。

▶ 次の記事
C言語入門:③-4 ハンドル化【応用ロジック】

◀ 前回の記事
C言語入門:③-2 配列と文字列【応用ロジック】

◆同じカテゴリの記事一覧(概要ページ)
C言語入門シリーズ:③-0 応用ロジック【概要】(全5記事)

◆シリーズの記事一覧
C言語入門シリーズ:プログラムの基本構造【記事一覧】

2 COMMENTS

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です