mktxの超テキトー図解ポインタの概念にかんする指摘

他にもあったら追記はご自由に。 はてブで一気に広まったようですが、若干書き方に問題があり誤解を生じ後から面倒になる可能性があるようです。
7
@mktx

なぜポインタを使わなきゃいけないのかーを書かなきゃか

2010-11-08 16:22:00
みょうが 🇺🇦 @mrkn

@mktx ポインタをショートカットに喩える説明は良くないです。Cのポインタは配列のような記憶空間の存在を仮定して設計されてます。先にC言語の配列を学び、図解してみてください。その図はそのままポインタの説明に使えます。そうすれば、かなり正確に理解できます。

2010-11-08 16:32:27
みょうが 🇺🇦 @mrkn

C のポインタは、記憶空間の位置が整数で表現できる事を仮定して設計されているので、ショートカットじゃダメなんですよ。配列を使って説明しなきゃダメなんです。

2010-11-08 16:36:55
みょうが 🇺🇦 @mrkn

@m_seki 僕達 Ruby 札幌のレシピブックが 在庫[] = { 初刷, 初刷, 初刷, ... }; な感じでございます。

2010-11-08 16:57:37
@mktx

配列の図解は今書いてるところですすみません><アドレスを理解するためにショートカットに例えたので、そこは変える必要はないと思っています RT @mrkn: @mktx ポインタをショートカットに喩える説明は良くないです。Cのポインタは配列のような記憶空間の存在を仮定して設計され

2010-11-08 17:06:01
みょうが 🇺🇦 @mrkn

@mktx Cのポインタは、アドレスが整数であることを仮定して設計されているんです。ですから、ただの番号なので残念ながら矢印では喩えられないんですよ。

2010-11-08 17:17:33
そらは @sora_h

@mktx @mrkn つまりメモリも配列みたいなものだってことですよ?

2010-11-08 17:19:53
@mktx

意味がわからない単語を辞書で調べたら、 その辞書の説明文にでてくる単語もまた辞書ひかないとわかんないみたいなことになって放棄したくなるので多分ダメなんだとおもう…基礎からやり直せよめんどくさいとかいわれるんですねわかります

2010-11-08 17:23:26
そらは @sora_h

@mktx 概念じゃなくてメモリは本当に配列みたいになってるんですよ。アドレスで引き出す配列です。

2010-11-08 17:24:13
@mktx

むずかしいことをむずかしいままむずかしい単語を知ってる人たちが理解するのはずるいと思うから、単語をしらなくても絵で見て直感で理解できるようにしたい(自分のために)んだけど無謀すぎた。うちの理解が到底足りないのは分かってるしにたい。

2010-11-08 17:26:30
@mktx

@sora_h その絵今書いてるとこです(´;ω;`)アドレスそのものがなんなのか、初心者には「変数の住所だよ」といわれても意味がわからないだけなので、例えばショートカットのリンク先みたいなものだよーって書いたのです。変数を理解するのにも、箱に例えて理解したのでその感じで><

2010-11-08 17:30:58
@mktx

メモリの話を何回も持ち出されるけど、あくまで現時点で書いてるのはポインタの宣言の仕方とアドレスそのものがなんのためにどこでつかうのかしか書いてなくて、そのアドレスがメモリに関係するんだよって言われてもまだそこまで図解進んでない(配列の説明がまだだから)

2010-11-08 17:34:07
みょうが 🇺🇦 @mrkn

@mktx p = &a としましょう。p + 1 は何のショートカットになってますか?

2010-11-08 17:36:34
そらは @sora_h

@mktx 変数が箱なのは間違ってない。ポインタはちょっと間違ってるらしいんだけど、 @mrkn からきいてください

2010-11-08 17:37:02
そらは @sora_h

. @mktx のあの絵でのポインタの解説に関する論争が Skypeのruby札幌オープンチャット で巻き起こっている。

2010-11-08 17:38:18
みょうが 🇺🇦 @mrkn

[開発][C言語]超テキトー図解ポインタ - chocolate holic http://ff.im/-tmjnE

2010-11-08 18:09:46
みょうが 🇺🇦 @mrkn

@ryutorion 手順がどうのこうのではなく、そもそもショートカットで喩えられるモノではないと主張しているのですが、伝わりにくいみたいです。先に配列から学べば分かってくれると思ってるんですけどね。

2010-11-08 18:17:05
みょうが 🇺🇦 @mrkn

@terakuma 間違いを訂正する事は批判でしょうか?ちなみに私は絵を描く能力を持っていないので「配列の説明図を先に示し、それをそのままポインタの説明に使える」という代替案を言葉で示しましたが効果はありませんでした。

2010-11-08 19:09:00
みょうが 🇺🇦 @mrkn

@terakuma おっしゃる通り140字では伝えられなかったんだと思います。

2010-11-08 19:34:21
@mktx

@mrkn 話がすこし違うと思のですが、int *p;が例えればショートカットを作ったときで、p = &aは例えばその作ったショートカットにリンク先を設定してあげるようなものだ、とあくまで例えています。*pまたはポインタそのものが実際のショートカットと置き換わるわけではないです。

2010-11-08 19:57:40
みょうが 🇺🇦 @mrkn

@mktx 置き換わるわけじゃない事は理解してます。その延長線上に p + 1 や (char *)p などを説明できるだけの想像力が私には無いのです。できるんでしょうか?

2010-11-08 20:00:31