C++で関数の引数において多次元配列を受け取って、その配列のサイズを取得しようとすると上手く行きません
具体的になにがどううまく行かないのかというと
lang
1#include <iostream> 2using namespace std; 3 4void func(int arr[][2]); 5 6int main(){ 7 int arr[2][2] = { 8 {1,2}, {3,4} 9 }; 10 11 func(arr); 12 return 0; 13} 14 15void func(int arr[][2]){ 16 cout << sizeof(arr) << endl; 17 cout << sizeof(arr[0]) << endl; 18}
上のコードを実行した時に、intのサイズが4であるとすると結果は、
16
8
と出力されるはずなのに
8
8
と出力されます
func関数内の
cout << sizeof(arr) << endl;
の部分においてちゃんとサイズが取得できていません。
配列のサイズを色々変えてみても
sizeof(arr[0])
の値は期待通りに出るのですが
sizeof(arr)は
上に同じく8と出力されてしまいます
また関数の引数を
void func(int(*arr)[2]);
void func(int arr[2][2]);
のように宣言しても同じ結果になりました。
多次元配列を引数で受け取ってその配列全体のサイズを取得する場合どのようにすればいいのでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。