次のような関数に配列の参照を渡すことができます。
void f(int (&a)[5]);
int x[5];
f(x); //okay
int y[6];
f(y); //error - type of y is not `int (&)[5]`.
またはさらに良いことに、関数テンプレートを書くことができます:
template<size_t N>
void f(int (&a)[N]); //N is size of the array!
int x[5];
f(x); //okay - N becomes 5
int y[6];
f(y); //okay - N becomes 6
今私の質問は、関数から配列の参照を返す方法ですか?
関数から次の型の配列を返したい:
int a[N];
int a[M][N];
int (*a)[N];
int (*a)[M][N];
whereM
とN
はコンパイル時に認識されます!
関数との間で配列のコンパイル時の参照を渡したり返したりするための一般的なルールは何ですか? int (*a)[M][N]
型の配列の参照を関数に渡すにはどうすればよいですか?
編集:
Adamのコメント:int (*a)[N]
配列ではなく、配列へのポインタです。
はい。しかし、1 つの次元はコンパイル時にわかっています。コンパイル時にわかっているこの情報を関数に渡すにはどうすればよいでしょうか?