ポインタとは?ぽいんた
ポインタとは、値そのものではなく、値が置かれている記憶領域の番地を保持する変数。番地をたどれば実体に届くので、大きなデータを複製せずに受け渡せる。連結リスト(要素を次々につないだ列)や木構造では各要素が次の要素の番地を持ち、番地を書き換えるだけで並び順や親子関係を変えられるため、要素をずらす処理が要らない。
最終更新:2026-10-09
この語が出る過去問を解く →背景
配列は場所が連続しているので、途中に1つ挿入するだけで後ろの要素を全部ずらすことになり、使う個数も先に決めておく必要があった。「場所そのものを値として扱える」ようにすると、離れた領域を数珠つなぎにでき、必要になった分だけ確保して足していける。この考え方がデータ構造の土台で、基本情報技術者試験では科目Bの擬似言語で連結リストのつなぎ替えとして問われる。
具体例
JavaやPythonには番地を計算する仕組みは無く、データの場所を指し示す情報(参照)だけを扱う。連結リストで要素Xを外すには、Xを指していた要素の行き先をXの次へ向け直せばよい。
試験での引っ掛け
つなぎ替えの順序を誤り、先に手前側の行き先を消すと後続の要素にどこからも到達できなくなる。どこからも指されない領域は解放できずに残り続ける。番地を持つぶん記憶領域を余分に使い、実体まで1段たどるので配列の添字によるアクセスより遅い点も押さえる。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成28年度 秋期 基本情報技術者試験 午前 問9(IPA)解説で登場
主記憶のデータを図のように参照するアドレス指定方式はどれか。
正解:間接アドレス指定
要点:間接アドレス指定は指した先にアドレスが入る2段階参照
命令のアドレス部が示す番地の中身が、実データそのものではなく次に参照すべき番地(ポインタ)になっている方式である。図では20番地を見ると25という値が入っており、その25番地に目的のデータがあるという2段階の参照になっているため、間接アドレス指定に該当する。
出典:平成29年度 春期 基本情報技術者試験 午前 問4(IPA)
データ構造の一つであるリストは,配列を用いて実現する場合と,ポインタを用いて実現する場合とがある。配列を用いて実現する場合の特徴はどれか。ここで,配列を用いたリ…
正解:位置を指定して,任意のデータに直接アクセスすることができる。
要点:配列リストは添字計算で任意要素へ直接アクセスできる
配列で実現したリストは要素がメモリ上に連続して並ぶため、先頭アドレスと添字から目的の要素のアドレスを計算でき、何番目でも同じ手間で直接読めます。一方で途中への挿入や削除では後続要素をずらす必要があり、ここはポインタ方式のほうが有利です。設問は配列方式の特徴を問うているので、直接アクセスできる点が答えになります。
出典:令和5年度 公開問題 基本情報技術者試験 科目A 問2(IPA)
双方向のポインタをもつリスト構造のデータを表に示す。この表において新たな社員Gを社員Aと社員Kの間に追加する。追加後の表のポインタa〜fの中で追加前と比べて値が…
正解:a, f
要点:双方向リスト挿入で変わるのは前後2本のポインタだけ
双方向リストの途中に要素を挿入するとき、値が変わるのは挿入位置の前後にある既存要素のポインタだけである。前側の要素では次ポインタが新要素を指すように変わり、後側の要素では前ポインタが新要素を指すように変わる。前側の前ポインタと後側の次ポインタは影響を受けない。したがって変化するのは社員Aの次ポインタと社員Kの前ポインタの二つになる。
出典:令和8年度 公開問題 基本情報技術者試験 科目B 問4(IPA)解説で登場
次のプログラム中の a と b に入れる正しい答えの組合せを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 単方向リストを、配列dataListと…
正解:a: pointerList[p]、b: pointerList[p]
要点:リストは次ポインタの未定義で終端を判定して進む
単方向リストをたどる処理では、現在位置 p の値を取り出した後、次の要素番号を pointerList[p] から得ます。末尾に達したかどうかは「次を指すポインタが未定義かどうか」で判定するので、空欄 a は pointerList[p] です。判定を通過したら空欄 b で p ← pointerList[p] として次へ進みます。dataList[p] を判定に使うと、値が未定義でなくてもリンクが切れている場合を捉えられず、i を代入すると連結順ではなく要素番号順にたどってしまいます。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。