C++で配列を関数パラメータとして使用する方法

1336 ワード

1.1次元配列を関数パラメータとする
void func(int array[])

パラメトリック配列を宣言することは、実際にいくつかの要素を含む配列を確立することを意味するものではなく、関数を呼び出すときも記憶ユニットを割り当てず、array[]のような形式でarrayが1次元配列の名前であり、実パラメトリックから送信されたアドレスを受信するために使用される.したがってarray[]の数値は実用的ではなく,コンパイルシステムは1次元配列[]内の内容を処理せず,パラメトリック1次元配列の宣言にはパラメータ個数を書くことも書かないこともできる.関数の最初のいくつかの書き方はすべて合法的で、作用は同じです
void func(int array[10])  //               

void func(int array[])   //       

void func(int array[5])    //             

2.2 D配列の関数パラメータ
規定:2 D配列をパラメータとして関数に渡す場合は、関数のパラメータ宣言に配列の列数を指定する必要があります.配列の行数はあまり関係なく、指定しても指定しなくてもいいです.
したがって、2 D配列は、関数パラメータとして次のように正しく記述されます.
void Func(int array[3][10]) 

void Func(int array[ ][10])

配列の行数は重要ではないので、次のように書くこともできます.
void func(int (*array)[10])

注意*arrayは括弧で囲む必要があります.この形式の宣言パラメータは、10要素の1次元配列を指すポインタです.[]の優先度が*の優先度より高いため、*arrayはカッコで囲まなければなりません.
2 D以上の次元のサイズを省略することはできません.次の定義は合法ではありません.
 void Func(int array[ ][ ])

 void Func(int array[3][ ])

実パラメトリックから渡されるのは配列の開始アドレスであるため、メモリには配列規則に従って(行ごとに)格納され、行と列を区別するのではなく、パラメトリックに列数を説明しないと、システムはどれだけの行に何列すべきかを決定できません.
実パラメトリック配列次元は、例えば、void Func(int array[3][10]);実パラメータグループはint array[5][10];関数呼び出しFunc(array)を行う場合、配列はメモリに連続的に格納されるため、形参加実パラメータ配列の行数は対応しないが、列数は同じで、同じ開始アドレスを有し、後続の値にアクセスできる