Lispの勉強を始める。細かくはscheme by gauche。
湯浅太一 著 『Scheme入門』 岩波書店
を差し当りの参考に。しかしこの本の前半部については、「魔法言語 リリカル☆Lisp」の方が分かりやすかったように思う。これを一通り読めたらSCIPに挑戦してみたい。
keyword:プログラミング,linux,親指シフト,(物理),TeX,emacs,など々々
初心者のパソコン関係の備忘録。
環境はおもにVine -> Debian -> Gentoo -> Debian -> Gentoo -> FreeBSD
最近は研究室のサーバーを使って遊んだり。
2010年2月27日土曜日
多次元配列を関数に渡す
メモリは一次元なので、多次元配列をそのまま格納することはできない。
サイズの分かっている配列ならば、以下のようにできる。
int func(int (*array)[]) ;
int main()
{
int array[2][3] ;
...
func(array) ;
...
}
int func(int (*array)[])
{
...
}
main関数内でサイズを決定するような場合は、一旦一次元化するしかなさそうだ。
サイズの分かっている配列ならば、以下のようにできる。
int func(int (*array)[]) ;
int main()
{
int array[2][3] ;
...
func(array) ;
...
}
int func(int (*array)[])
{
...
}
main関数内でサイズを決定するような場合は、一旦一次元化するしかなさそうだ。
int func(int *array, int N, int M) ;
int main()
{
int i,j ;
int N = 2 ;
int M = 3 ;
int array[N][M] ;
...
int align_array[N*M] ;
for(i=0; i
for(j=0; j
align_array[N*i +j] =array[i][j] ;
func(array) ;
for(i=0; i
for(j=0; j
array[i][j] =align_array[N*i +j] ;
...
}
int func(int *array, int N, int M)
{
int array[N][M] ;
for(i=0; i
for(j=0; j
array[i][j] =align_array[N*i +j] ;
...
for(i=0; i
for(j=0; j
align_array[N*i +j] =array[i][j] ;
...
}
登録:
投稿 (Atom)