• ベストアンサー

ポインタと配列

配列を複数他の関数に渡す方法を知りたいです。1つの場合は、次でできました。 void sample2(int *a) { printf("%d",a[2]); } int sample1() { int a[]={0,1,2}; sample2(a) return(0); } sample1のなかにもっと多数の配列a1,a2,a3,....,ax,.... が存在する時に、それを他の関数にわたす効率のいい方法はありますか?基本的な質問かもしれませんがCの本が今手元に無かったので質問させていただきました。

質問者が選んだベストアンサー

  • ベストアンサー
  • knyacki__
  • ベストアンサー率42% (50/117)
回答No.1

配列の要素数がある程度決まっているのなら多次元配列を使う手がありますね。 こんな感じで、 ---- int hairetu[][3] = {{1,2,3},{4,5,6},...{l,m,n}}; sample2(hairetu); ---- void sample2 (int** hairetu) { printf ("%d", hairetu[0][0]); } ---- あと、ポインタ配列を使う手もありますね。 ---- int* hairetu[10]; int a1[] = {1,2,3,4,5}; int a2[] = {6,7,8,9,0}; : hairetu[0] = a1; hairetu[1] = a2; : sample2 (hairetu); ---- void sample2 (int** hairetu) { printf ("%d", hairetu[0][0]); } ---- いかがでしょう?

その他の回答 (2)

  • damejan
  • ベストアンサー率30% (58/192)
回答No.3

関数に渡す配列の数が決まっているならば、それらの配列を構造体で包むのも1つの手でしょうね。構造体で包めば、異る型の配列も1つの構造体変数で扱えますしね。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

ポインタの配列を作成して、そのポインタの配列のポインタを渡す、ってので十分だと思います。 STLが使えるなら、Vector<int *>とか。 stdarg.hまたはvarargs.hを使って、可変引数の関数を定義するって手もありますね。

参考URL:
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/stdarg.3.html

関連するQ&A