プログラミング言語 C

どうやら hash search と skip list の間には、構造体への ポインタを使った 共通する algorithm が あるらしい、という ところまでは 判明。(これ以上は、初心者では ムリみたい ...)
ポインタ配列とは 別なので、とばしていた 多次元配列に 戻って、

実際には、ポインタ配列よりも 使用されることは 少ないが、C では 直交的な 多次元配列が 使える。

C においては、二次元配列は 実際には 一次元配列であって、そこでの要素が それぞれに 1つの 配列に なっている。 したがって、添字は、

daytab[i][j] /* [row][col] */

のように 書くのであって

daytab[i, j] /* WRONG */

は まちがいである。

この記法以外の点では、二次元配列は 他の言語と ほぼ同様に 扱うことが 可能である。 要素は 行ごとに 格納され、要素が メモリの順に アクセスされるときは (配列の) 最も右の要素、つまり 列 (column) が 最も早く 変化する。

配列は 大カッコ { } で 囲まれた 初期値リストで 初期化される。

二次元配列を 関数に 渡す場合は、列の数 (number of colums) が なければならない。 渡されるのは 行の配列のポインタだから 行の数 (number of rows) は 無関係である。 (つまり)

func(int daytab[][13]) { .... }

あるいは、

func(int (*daytab)[13]) { .... }

と 書ける。これは、引数が 13個の配列の ポインタであることを 示している。(下の式で) カッコ ( ) が 必要なのは、中カッコ [ ] が * よりも 優先度が 高いからである。(p135-137)