sizeof operator

来自cppreference.com
< cpp‎ | language
 
 
C++语言
表达式
替代表示
字面量
布尔型 - 整型 - 浮点型
字符型 - 字符串 - nullptr (C++11)
用户定义 (C++11)
Utilities
属性 (C++11)
Types
typedef声明
类型别名声明 (C++11)
Casts
隐式类型转换 - 显示类型转换
static_cast - dynamic_cast
const_cast - reinterpret_cast
内存分配
类特有的函数属性
explicit (C++11)
static
静态成员函数
模板
杂项
 

查询对象或类型的大小

在需要知道对象的实际大小时使用。

目录

[编辑] 语法

sizeof( type )
sizeof expression None

两个版本都返回一个 std::size_t 类型的常量。

[编辑] 解释

1) 返回 type 类型对应对象的大小(以字节为单位)。

2) 返回 expression 的返回类型对应对象的大小(以字节为单位)。

[编辑] 注解

无论 CHAR_BIT 为何值,sizeof(char)sizeof(signed char)sizeof(unsigned char) 总是返回 1

sizeof 不能用于函数类型、不完全类型和位段左值。

当应用于引用类型时,其结果是被引用类型的大小。

当应用于类时,其结果是该类对象的大小与该对象放入数组时所需的填充大小的总和。

当应用于空类时,总是返回 1。

[编辑] 关键字

sizeof

[编辑] 示例

示例输出表示该系统是 64 位指针、32 位 int 系统

#include <iostream>
struct Empty {};
struct Bit {unsigned bit:1; };
int main()
{
    Empty e;
    Bit b;
    std::cout << "size of empty class: "     << sizeof e        << '\n'
              << "size of pointer : "        << sizeof &e       << '\n'
//            << "size of function: "        << sizeof(void())  << '\n'  // compile error
//            << "size of incomplete type: " << sizeof(int[])   << '\n'  // compile error
//            << "size of bit field: "       << sizeof b.bit    << '\n'  // compile error
              << "size of array of 10 int: " << sizeof(int[10]) << '\n';
}

输出:

size of empty class: 1
size of pointer : 8
size of array of 10 int: 40

[编辑] 另请参阅