C ++の配列は、配列の最初の要素の場所へのポインターとして扱うことができます。2次元配列はポインターの配列と考えることができ、各ポインターは別の配列を指します。これは厳密には配列の実装方法を示しているわけではありませんが、Cは配列と最初の要素へのポインターの間の暗黙的な変換をサポートしており、それらは同じものと考えることができます。Array [index]は、の単なる構文糖衣です*(Array + index*sizeof(whatever's in the array))
。したがって、関数を機能させるには、次のことを実行できます。
void fn(int (*a)[10]) {
cout<<a[0][0]<<" "<<a[0][1];
}
int main() {
int A[10][10];
A[0][0]=1;
A[0][1]=2;
fn(A);
}
配列はすでにポインタであるため、最初に配列のアドレスを取得する必要はありません。ただし、C ++を使用しているため、標準のコンテナーの使用を検討する必要があります。
void fn(vector< vector<int> > const&a) {
cout<<a[0][0]<<" "<<a[0][1];
}
int main() {
vector< vector<int> > A( 10, vector<int>(10) );
A[0][0]=1;
A[0][1]=2;
fn(A);
}