Re: pointer
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>
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735