( ゚Д゚)ノ ギコ猫のプログラム相談室part5

このエントリーをはてなブックマークに追加
165>163
2.
その変数が利用されるときの使われ方に出来るだけ似たような形で宣言する、
という方針らしいとか言う話を聞いたことがある気がする。

この場合で言えば、a を 「int[2] が4つ」な配列として宣言したなら、
後で使うときは a[0], a[1], a[2], a[3] はそれぞれがサイズ2の配列扱いになるわけで。
ここで更に a[0] の 2番目の要素にアクセスするときは a[0][1] っつう書き方になる。

要するに、 「int[2] が4つ」を使うときは a[0-3][0-1] って記法になるんで、
宣言の方もそれにあわせて int a[4][2] らしい。
166>163:2001/03/13(火) 07:45
その本を持っていないので、詳しくは分かりませんが。
オブジェクトというのは、いろんな意味で使われる。
オブジェクトをインスタンスの意味でとらえたら、
あなたの考えるとおり、答えのほうが間違えている。
オブジェクトをクラス(インスタンスの型)の意味でとらえたら、
答えは正しい。ということではないですか?自信はないですが。

配列やポインタの宣言では、実際の変数で演算子を使う位置に、[]や*を書く、
というのが、Cの考え方です。
int a[2][4]; だと、a[i][j] で配列の中身を参照するときに、iは0〜1でjは0〜3で、
配列の中身を参照するわけで、宣言での位置と実際の変数での位置が一致している。
int *a[2];(ポインタの配列)と int (*a)[2]; (配列へのポインタ)の違いも、
前者は実際に *a[i]で中身を参照するし、後者は (*a)[i] で中身を参照するという風に、
実際の使い方と位置が一致しているので、見分ける事が可能。ということです。
あと、int (a[2])[4]; みたいに、余分なカッコはOK。
167デフォルトの名無しさん:2001/03/13(火) 07:59
参考書は疑い半分で読み進めたほうが良いよ。
原典(Reference of ISO C++) 以外の参考書は多くの Reviewer の
洗礼にさらされていないことが多いから内容がわかりづらかったり
極端な場合誤っていることもある。
多くの本を読んで見る目を養っていけ。

蛇足だがプログラム方法論を語る書籍は
とりわけ独り善がりな本が多いので
良書かどうか見極めることが先になる。
悪い本に時間を費やすのは大馬鹿だからな。