sizeof

一元運算子,它產生運算元的位元組大小,可以是表示式或型別。如果運算元是表示式,則不對其進行求值。大小是 std::size_t 型別的常量表示式。

如果運算元是型別,則必須用括號括起來。

  • sizeof 應用於函式型別是違法的。
  • sizeof 應用於不完整型別是非法的,包括 void
  • 如果 sizeof 應用於參考型別 T&T&&,則相當於 sizeof(T)
  • sizeof 應用於類型別時,它會產生該型別的完整物件中的位元組數,包括中間或末尾的任何填充位元組。因此,sizeof 表示式的值永遠不能為 0.有關詳細資訊,請參閱物件型別的佈局
  • charsigned charunsigned char 型別的大小為 1.相反,一個位元組被定義為儲存 char 物件所需的記憶體量。它不一定意味著 8 位,因為一些系統具有超過 8 位的 char 物件。

如果 expr 是一個表示式,sizeof( expr ) 相當於 sizeof(T),其中 Texpr 的型別*。*

int a[100];
std::cout << "The number of bytes in `a` is: " << sizeof a;
memset(a, 0, sizeof a); // zeroes out the array

Version >= C++ 11

sizeof... 運算子產生引數包中的元素數。

template <class... T>
void f(T&&...) {
    std::cout << "f was called with " << sizeof...(T) << " arguments\n";
}