Skip to content

sizeof ​

陣列參數會退化成指標 ​

cpp
void f1(char a[20]);            // 其實是 char*,sizeof(a) == 8
void f2(char (&a)[10]);         // reference,sizeof(a) == 10,只收長度 10
template <size_t N>
void f3(char (&a)[N]);          // reference + 推導,任意長度都正確

要保留長度:用 array reference + template,或改用 std::array / std::span。

不建構物件取得成員大小 ​

cpp
sizeof(Foo::m);             // C++11
sizeof(((Foo*)0)->m);       // C 寫法:sizeof 不會真的 evaluate

參考 ​

頁面歷史

Just observe 👀