sizeof
一元運算子,它產生運算元的位元組大小,可以是表示式或型別。如果運算元是表示式,則不對其進行求值。大小是 std::size_t
型別的常量表示式。
如果運算元是型別,則必須用括號括起來。
- 將
sizeof
應用於函式型別是違法的。 - 將
sizeof
應用於不完整型別是非法的,包括void
。 - 如果 sizeof 應用於參考型別
T&
或T&&
,則相當於sizeof(T)
。 - 當
sizeof
應用於類型別時,它會產生該型別的完整物件中的位元組數,包括中間或末尾的任何填充位元組。因此,sizeof
表示式的值永遠不能為 0.有關詳細資訊,請參閱物件型別的佈局 。 char
,signed char
和unsigned char
型別的大小為 1.相反,一個位元組被定義為儲存char
物件所需的記憶體量。它不一定意味著 8 位,因為一些系統具有超過 8 位的char
物件。
如果 expr 是一個表示式,sizeof(
expr )
相當於 sizeof(T)
,其中 T
是 expr 的型別*。*
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";
}