ポインタ、ポインター(英:pointer)とは、何かを指し示すもののこと。
ポインタは、メモリ上のアドレスを指すデータ型のことである。その型の変数であるポインタ変数のことをポインタと呼ぶこともある。主にC言語やその派生言語で使われる。
C言語の初心者が挫折しやすい概念のひとつ。トリッキーなコーディングが跋扈していることもそれに拍車をかけている。このため、概念のひとつに過ぎないにも関わらず、ポインタの話題に特化した書籍が多数出版されている。
C言語においては、文字列操作や動的なメモリ確保(malloc)を行うとき、避けて通れない。そのため、ポインタはC言語を使いこなすためには、誰もが習得しなければならない概念といえる。
ポインタは加減算の対象になり、整数型との型変換をも行うことができる。そのため、無効なアドレスを容易に作り出すことができ、バグの温床となりやすい。また、メモリアドレスが入っているからといって必ずしも物理メモリのアドレスであるとは限らず、近代的なOSであればほぼ間違いなく論理アドレスであろう。
ポインタに似たような概念に参照がある。参照はNULLにならない、加減算ができないといった点でポインタと異なり、ポインタのフリーダムさを自重した感じになっている。
カッコ悪いと思っているかもしれないが、[]演算子が使える局面では積極的にこれを使おうよ(保守担当の心の叫び)。
掲示板
40 ななしのよっしん
2021/07/03(土) 10:38:57 ID: XsMfXtBySP
「ポインタという概念を理解する」というのはそもそも正確じゃないのよね。
「メモリという概念と、その一部としてのポインタを理解する」というのが正しい。
Cで一般的にメモリと通称されているのはパソコンに刺さってるやつそのものじゃなく、OSとCPUと言語の仕様がしっちゃかめっちゃかに混ざった「メモリ」というプログラム概念だから。
41 ななしのよっしん
2023/02/20(月) 01:48:52 ID: bCMifE42R/
まさに記事にも書いてあることだけど、
文字列、配列、動的メモリ確保、関数の引数みたいな、ポインタが重要な存在の事柄が多いがゆえに
学ぼうとしたら一気に知識がなだれ込んでくるんだよな
42 ななしのよっしん
2025/03/12(水) 17:18:35 ID: wIv8gWIWxx
int *ptr;
この変数名は*ptr そんな風に考えていた時期が俺にもありました
急上昇ワード改
最終更新:2025/03/19(水) 06:00
最終更新:2025/03/19(水) 05:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。