ポインタ単語

ポインタ
  • 2
  • 0pt
掲示板へ

ポインタ、ポインター(英:pointer)とは、何かをし示すもののこと。

  1. プログラミングの分野において、メモリ上のアドレスデータ。本稿で解説する。
  2. マウスポインタカーソル)→マウスカーソル
  3. レイザーポインタ
  4. 獲物の位置を示す役割の猟。またそのために良された種の一つ。

 概要

ポインタは、メモリ上のアドレスデータのことである。その変数であるポインタ変数のことをポインタと呼ぶこともある。C言語やその生言で使われる。

C言語初心者が挫折しやすい概念のひとつトリッキーコーディング跋扈していることもそれに拍をかけている。このため、概念のひとつに過ぎないにも関わらず、ポインタの話題に特化した書籍が多数出版されている。

C言語においては、文字列操作や動的なメモリ確保(malloc)を行うとき、避けて通れない。そのため、ポインタはC言語を使いこなすためには、もが習得しなければならない概念といえる。

ポインタと参照

ポインタは加減算の対になり、整数との変換をも行うことができる。そのため、効なアドレスを容易に作り出すことができ、バグの温床となりやすい。また、メモリアドレスが入っているからといって必ずしも物理メモリアドレスであるとは限らず、近代的なOSであればほぼ間違いなく論理アドレスであろう。

ポインタに似たような概念に参照がある。参照はNULLにならない、加減算ができないといった点でポインタと異なり、ポインタのフリーダムさを自重した感じになっている。

叫び

 

カッコ悪いと思っているかもしれないが、[]演算子が使える局面では積極的にこれを使おうよ保守担当の心の叫び)。

関連動画

関連商品

関連項目

【スポンサーリンク】

  • 2
  • 0pt
スマホ版URL:
https://dic.nicovideo.jp/t/a/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

ポインタ

21 ななしのよっしん
2015/12/23(水) 20:36:51 ID: Wkdi5Ha6HN
近代的な言しか知らないに、システマティックなメモリ思考を身に着けてほしいという意味をこめて「Cをやれ」と言う人は多い
でもそれは逆も言えていて、Cしか知らない変態としてのCの成分(ポインタ周りの記法)を頭から抜くために一度Javaか何かをやるべき
22 ななしのよっしん
2016/07/17(日) 18:36:05 ID: g2q64jYKCX
組み込み系触ればポインタとか一発だろと思わなくもない
ハードウェア上でのやり取りを理解せずにプログラム触るから理解できないだけだよ
まあその辺り意識しなくても書けちゃったりするしな(処理時間は別として)
23 ななしのよっしん
2016/11/01(火) 15:16:30 ID: KVOpdE3qY8
ぶっちゃけポインタより再帰で挫折してる気がする
24 ななしのよっしん
2017/01/29(日) 22:54:47 ID: Wkdi5Ha6HN
再帰とかお願いだから挫折したままいてくれ
習得せんでいい
25 ななしのよっしん
2017/04/30(日) 01:27:19 ID: c/XWukpYXi
再帰程度理解できないやつにプロとして仕事してほしくない。
26 ななしのよっしん
2017/12/07(木) 09:05:58 ID: YKDime+395
「"int* ptr" が正規表現。"int *ptr"は許容表現。」
って言えば、初心者がつまずくことなんてなくなるんだろう
intint*の違いだと説明すりゃほとんどの子は納得する

int*には、intが占有するメモリアドレスが入る」
int x;//int変数x
int* ptr;//int*変数ptr
ptr=&x;//ptrにxのアドレスを代入

「現アドレス上を操作するときはポインタ変数にして行う」
*ptr=5;//ポインタptrに5を代入(これはx=5と同義)

これなら中学生でも余裕でいける
27 ななしのよっしん
2017/12/07(木) 10:36:08 ID: YKDime+395
>>25
再帰は直感的に理解しやすいが正確な値を内演算しづらいデメリットがあるからなぁ
それならforループで同じ処理すりゃ読みやすいだろって話じゃないかな>>24が言いたいことは

消費メモリ節約できるとかいう具体的なメリットがないなら慣れ親しんだ表現のが好ましいよ
28 ななしのよっしん
2018/06/27(水) 19:21:18 ID: wIv8gWIWxx
>>26
int* が本来正しい表現だったんだけど、
例えば3つ宣言するときとかいちいちint*を書くの面倒だから
変数名の前に書いてもOKになってます、でいいのかしら。
29 ななしのよっしん
2018/11/07(水) 21:37:22 ID: mIU2hA7IUv
10年経っても理解できない
30 ななしのよっしん
2018/12/04(火) 20:10:40 ID: c/XWukpYXi
>>28
すべてはCのポインタ宣言がアレなせいだと思われる。
int* a,b;
と宣言した時、これはint*2つではなく、int* a と int bと解釈する。だからポインタ2つを宣言したければ int* a, * b; とするしかない。とはいえ* bの空白はキモいので*bにしたくなるのが人情で、こうなると心理学的に言っても *a もそれにえたくなる。
ということで、構文上は変数の方に * が付くのが自然と理解せざるを得ないorz

現実に出回っているAPIリファレンスなどを見ても*は変数側につくのが当たり前で、の側に付けてるものはほぼ見ない。関数引数が個別だからそうしなくてもいいんだけど、もうどうしようもないとしか。
ちなみにだが、これを反してちゃんと int* にしたのがD言語

急上昇ワード

2020/01/27(月)19時更新