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";
}