ここにいくつかのコードがあります:
int static_array[10];
cout<<"sizeof(static_array): " <<sizeof(static_array)<<endl;
int *ptr = static_array;
cout<<"sizeof(ptr): " <<sizeof(ptr)<<endl;
出力:
sizeof(static_array): 40
sizeof(ptr): 8
私が理解している限り、C++ 配列はポインターであり、sizeof(ptr) 関数はポインターのサイズを返します。static_array がポインターである場合 (ptr に割り当てたので、ポインターである必要があります)、そのサイズが実際には 8 バイトではなく 40 バイト (10 個の整数) である理由がわかりません。