Path: coconuts.jaist!wnoc-tyo-news!news.nc.u-tokyo.ac.jp!komaba!makino From: makino@chianti.c.u-tokyo.ac.jp (Jun Makino) Newsgroups: fj.lang.misc,fj.lang.fortran,fj.lang.c Subject: Re: Fortran vs. C (Re:Q.) Date: 23 Oct 1995 15:41:05 GMT Organization: Dept. of Earth Science & Astronomy, College of Arts & Sciences, Univ. of Tokyo Lines: 58 Distribution: fj Message-ID: References: <1995Oct20.093156.13621@sohon.tjsys.co.jp> <468eme$njq@news.st.rim.or.jp> <1995Oct23.041203.25049@sohon.tjsys.co.jp> NNTP-Posting-Host: tache.c.u-tokyo.ac.jp In-reply-to: arakawa@mbox.kyoto-inet.or.jp's message of 23 Oct 95 20:14:19 GMT Xref: coconuts.jaist fj.lang.misc:386 fj.lang.fortran:599 fj.lang.c:2053 いっぱいフォローがでそうですが、、、 >>>>> On 23 Oct 95 20:14:19 GMT, arakawa@mbox.kyoto-inet.or.jp (Yasuhiro Arakawa) said: > Cで関数の引数に多次元配列を用いたとき、配列のサイズを引数で渡す > ことができましたっけ?確かニューメリカル・レシピ・インCでも > ここで技巧を凝らしてたと思ったのですが。 > #誰かが持ち出してるらしくって、会社の書棚に見つからないので > #記憶で書いてるので間違ってるかもしれません。 > こんな感じでいいのではないでしょうか?。 > 特に技巧を凝らしているとも思いませんが。 > void func(int (*a)[16]); > void func2(void) > { > int aa[8][16]; > func(aa); > } > int aa[8][16]; > ^ここの所が普通じゃ渡せませんが。 だめでしょう。「配列のサイズを引数で渡す」といういい回しの意味を 誤解されているのではないかと思います。例えば subroutine clear_matrix(a,m,n,m1,n1) dimension a(m,n) do i = 1, m1 do j = 1, n1 a(i,j) = 0 enddo enddo というようなサブルーチンを、オブジェクトライブラリとして持ってい て、それが例えば program main dimension a(100,100) call clear_matrix(a, 100, 100, 10, 10) end というプログラムにリンクしても program main dimension a(200,100) call clear_matrix(a, 200, 100, 100, 10) end というプログラムにリンクしても動くという話なのですが、、、 このようなことをする簡単な方法が C にあれば是非御教授いただきたい と思います。 牧野@東大駒場