プログラム言語 II TOP

配列(4)

例題7.3

2次元配列引数



0. 1次元配列引数と2次元配列の補足
1次元配列を引数としたとき,実引数は具体的に何であるのか,また2次元配列の要素はメモリ上でどのように並んでいるのかを解説します。

  1次元配列引数と2次元配列の補足


1. 2次元配列引数の例(1)
void initArray ( int, int [ ] [ ] )
 2番目の引数で与えられる2次元配列の各要素に,1番目の引数で与えられる値を格納する関数

void writeArray ( int [ ] [ ] )
  引数で与えられる2次元配列の要素の値を表示する関数

 

実行結果

 

nitArray と writeArray の実引数 array は,2次元配列であることに注意してください(赤下線部)。

initArray の仮引数 ary の行と列の大きさは明示されていますが,writeArray の仮引数 ary では列の大きさだけが明示されていて,行の大きさは省略されています(青下線部)。

このように2次元配列を仮引数とする場合は,列の大きさだけを明示すればよく,行の大きさは省略することができます

注意
main の関数原型の仮引数を省略して
  void initArray(int, int [ ] [ ])
  void writeArray(int [ ] [ ]);
としてもかまいません。


2. 2次元配列仮引数の例(2)
2次元配列は,1次元配列を要素とする1次元配列であると前回述べました。例えば,
 int a[5][3];
のような配列 a に対して,
 a[1]
は,2行目全体(の1次元配列)を表わします。

このことを使って,2次元配列の各行を関数に与えるプログラムを以下に示します。

void setValue1 ( int [ ] [ ] )
 引数で与えられる2次元配列の各要素に,その要素の行と列それぞれの添字の値の和を格納する関数

void setValue2 ( int, int, int [ ] )
 3番目の引数で与えられる1次元配列の各要素に,1番目の引数の値と要素の添字の値の積を格納する関数である。  ただし,配列の大きさは2番目の引数で与えられる。

関数 initArray と関数 writeArray は例(1)と同じものなので,以下では省略しています。

 

実行結果

 

setValue2の3番目の実引数は1次元配列ですが,それは2次元配列の各行であることに注意してください(赤下線部)。


注意
先の例と同じく,main の関数原型の仮引数を省略してもかまいません。


3. 例題7.3
教科書参照


プログラム言語 II TOP