yas@is.tsukuba.ac.jp (Yasushi Shinjo) writes:

> 配列の引数じゃなくて添字ね。

う、なんか書いてて違和感あったのはこれだったのか。
御指摘ありがとうございます。


> int vv[3+1];
> 
> それで、v[0] は使わないことにします。一貫性をもって v[0] を
> 使わないなら、それで用は足りているはずです。

まあそうなんですが、別記事にも書きましたように、元ネタは
<URL:http://www.numerical-recipes.com/pubdom/nrutil.c.txt>
で、なにやら数値演算のパッケージの一部らしいのです。
で、オフセットは 1 に限らず(負も含め)任意にしたいみたいですね。
現実には 0 か 1 以外で使うことは、ほぼないでしょうけど。
このコードには matrix() という二次元版もありまして、
オフセットが大きくなると、ムダも大変大きくなると。


> あと、Cでそういうことをするには、常套手段としては、マクロを
> 使います。たとえば、
> 
> #define v(i)       vv[i-1]

飯島さんの指摘もありますが、 i は (i) でしょう。

<URL:http://www.numerical-recipes.com/news.html>
によると、最新版(売りもの)では 
| vectors and matrices are now zero-based!
と自慢しているので、たぶんその類の実装に変えたのだと思います。


> 丸い括弧は、Fortran みたいだし。いいんじゃないですか。

これウケました。すごくいいと思います!!
オフセットを 1 にしたいという要求が、
そもそもはおそらく FORTRAN のコードを使いたいということだと思いますので。

でも配列名もマクロに組み込むと
#define index(v,i)
とかなって見苦しいですね。
LISP みたいでいいか?

神田敏広 <candy@kgc.co.jp>