中級 › 配列と、先頭要素へのポインタでsizeofの結果が変わってしまう理由 › パターン2
配列と、先頭要素へのポインタでsizeofの結果が変わってしまう理由
配列そのもの(nums)と、先頭要素のアドレス(&nums[0])を混同してsizeofに渡してしまうバグです。
1 #include <iostream> 2 int main() { 3 int values[10] = {0,1,2,3,4,5,6,7,8,9}; 4 std::cout << sizeof(__________) << std::endl; ^ 5 return 0; 6 }
出力: 8期待: 40(int10個分)
空欄を埋めてコンパイル・実行を通す
配列を関数に渡すときも同じ理由でポインタに変わってしまいます(配列のポインタへの減衰)。見た目は似ていても配列名とポインタは別の型情報を持ちます。
次の問題