sizeof operator

来自cppreference.com
< cpp‎ | language
 
 
C++语言

|- class="t-nv-h1" | colspan="5" | 一般主题 |- | |- |

预处理器
注释

|

|-

|- class="t-nv-h1" | colspan="5" | 流程控制 |-

条件执行语句

| |- |

|

|-

循环语句

| |- |

|

|-

跳转语句

| |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 函数 |-

函数声明 Lambda函数声明 inline说明符 异常说明符 (已弃用) noexcept说明符 (C++11)

|- class="t-nv-h1" | colspan="5" | Exceptions |- | |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 命名空间 |- | |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 类型 |- | |- |

|

|-

说明符

| |- |

decltype (C++11)
auto (C++11)
alignas (C++11)

|

|-

存储持续期说明符 Initialization

| |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 表达式 |- | |- |

值类别
求值顺序

|

|-

替代表示 字面量 布尔型 - 整型 - 浮点型 字符型 - 字符串 - nullptr (C++11) 用户定义 (C++11)

|- class="t-nv-h1" | colspan="5" | Utilities |-

属性 (C++11) Types typedef声明 类型别名声明 (C++11) Casts 隐式类型转换 - 显示类型转换 static_cast - dynamic_cast const_cast - reinterpret_cast 内存分配

| |- |

|

|-

|- class="t-nv-h1" | colspan="5" | 类 |- | |- |

|

|-

类特有的函数属性

| |- |

|

explicit (C++11)
static

|-

静态成员函数

| |- |

|

|- |- class="t-nv-h1" | colspan="5" | 模板 |- | |- |

|

|- |- class="t-nv-h1" | colspan="5" | 杂项 |- | |- |

|

|-

 

查询对象或类型的大小

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

目录

[编辑] 语法

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

[编辑] 另请参阅

来自“http://zh.cppreference.com/mwiki/index.php?title=cpp/language/sizeof&oldid=31172