- 1 名前:仕様書無しさん [2006/12/26(火) 16:18:46 ]
- この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。 プログラマを悩ませるソースコード。 をつらつらと綴っていって頂戴。 ちなみにここは質問スレじゃないので 技術的な質問がしたいならム板に逝って。 前スレ この会社辞めようと思ったソースコード#14 pc8.2ch.net/test/read.cgi/prog/1158190165/
- 148 名前:仕様書無しさん mailto:sage [2006/12/29(金) 21:42:35 ]
- >>144
原因:アセンブリとCを配列が扱える程度までやらせて、下の文章を見せる。 --以下某書籍より引用-- COLUMN-4 p[i]って配列? 出来の良くないC言語の教科書では、p[i]はpという配列のi番目の要素であるとか、なんかそん なことが書いてあると思います。それは間違ってはいないかもしれませんが、結局ただのごまか しです。読者がアセンブラを理解していない場合は、そうやってごまかして説明するのが一番ラ クなのです。 p[i]というのは*(p+i)と完全に々意味で、長く書くのがめんどうな場合や、見た目の都合の ために使うものです。この例の場合は、「*(p+i)」と書くと6文字ですが、「p[i]」なら4文字なので す。それだけのことなので、好きなほうを使えばいいのです。ポインタを使いつつ「配列っぽく みせつらめ」の、省略表記でしかありません。 逆にp[0]と書く代わりに*pと書いても同じなのですから、こっちのほうが2文字減るわけです。 まあ状況に合わせて好きなほうを使えばいいだけです。 書き方を変えたら、ポインタが配列になったとか、そんなことじゃないです。変な教科書にだま されないでください。コンパイルの結果で生成される機械語も、完全に同じになります。意味の 変化がなく、単に書き方の違いでしかないという何よりの証拠です。 --次レスに続く--
- 149 名前:仕様書無しさん mailto:sage [2006/12/29(金) 21:43:26 ]
-
余談ですが、足し算は足す順序を変えてもいいので、*(p+i)を*(i+p)と書き換えることができ ます。だからp[i]をi[p]と書くこともできます。(うそだあ、と思うかもしれませんが、もちろん エラーにならないし、ちゃんと動きますよ)。a[2]を2[a]と書いてもいいのです。(これももちろ ん本当ですよ)。これが、2という配列のa番目の要素と言えるでしょうか?ぜんぜん言えません。 だから、やっぱりp[i]やi[p]はただの省略表現であって、本質的には配列とは関係ないのです。 --引用終了-- 結果:知的好奇心追及の旅に出発し、プロ並に基礎が固まる。
|

|