中級 › 配列と、先頭要素へのポインタでsizeofの結果が変わってしまう理由 › パターン3
配列と、先頭要素へのポインタでsizeofの結果が変わってしまう理由
配列そのもの(nums)と、先頭要素のアドレス(&nums[0])を混同してsizeofに渡してしまうバグです。
1 #include <iostream> 2 int main() { 3 int data[3] = {1,2,3}; 4 std::cout << sizeof(________) << std::endl; ^ 5 return 0; 6 }
出力: 8期待: 12(int3個分)
空欄を埋めてコンパイル・実行を通す
&data[0]とdataはどちらも同じアドレスを指しますが、sizeofが見ているのは値ではなく型なので結果が変わります。
次の問題