sizeof是C++关键字和编译时运算符,用于获取类型或变量的字节大小;可作用于类型名或变量名,如sizeof(int)、sizeof var;其结果依赖平台,常见类型在64位系统下int为4字节、double为8字节、指针为8字节;可用于计算数组总大小及元素个数,如sizeof(arr)/sizeof(arr[0]);注意字符串字面量包含'\0',结构体受内存对齐影响,且sizeof不执行表达式(如i++无副作用)。
sizeof
是 C++ 中的一个**关键字**,也是一个**编译时运算符**,用于获取数据类型或变量在内存中所占的
字节
数。它不是函数,而是在程序编译阶段就计算出结果的运算符,因此执行效率非常高。
sizeof 的基本语法
sizeof 可以作用于两种对象:
sizeof(类型名)
:获取指定数据类型的大小(以字节为单位)
sizeof(变量名)
或
sizeof 变量名
:获取某个变量所占的字节数
示例代码:
常见数据类型的大小(典型值)
注意:sizeof 的结果依赖于编译器和平台(如 32 位 vs 64 位系统),以下是一般情况下的常见值(以 64 位系统 GCC 编译器为例):
sizeof(char)
= 1 字节
sizeof(short)
= 2 字节
sizeof(int)
= 4 字节
sizeof(long)
= 8 字节(Linux/64位系统)或 4 字节(Windows)
sizeof(long long)
= 8 字节
sizeof(float)
= 4 字节
sizeof(double)
= 8 字节
sizeof(bool)
= 1 字节
sizeof(指针)
= 8 字节(64位系统)或 4 字节(32位系统)
sizeof 在数组中的应用
sizeof 可以用来获取整个数组占用的总字节数,这是它非常实用的一个场景。
Trae win
Trae Windows 官方版本现已全面支持 Win10 和 Win11 系统(64位)。国内开发者可直接访问 Trae 中文官网(trae.cn 或 trae.com.cn),一键下载官方正版 .exe 安装包,享受国内直连的高速稳定体验。安装过程极其简便,双击即可运行,并支持一键无缝导入 VS Code 或 Cursor 的原有主题、快捷键及插件配置。登录支持手机号、微信或稀土掘金账号。内置免费的豆包与 DeepSeek 等顶级大模型,让你开箱即用,轻松开启高效的 AI 智能编程之旅。
下载
立即学习
“
C++免费学习笔记(深入)
”;
这种方法常用于在函数外计算静态数组的元素个数。但注意:当数组作为参数传递给函数时,会退化为指针,此时 sizeof 将不再返回整个数组的大小。
sizeof 注意事项
sizeof 在编译期求值,不会对表达式进行实际计算。例如:
sizeof(i++)
不会使 i 自增,只是查看 i 的类型大小。
对字符串字面量使用 sizeof 时,会包含末尾的 '\0' 结束符:
sizeof("hello")
返回 6,而不是 5。
结构体的大小可能因
内存对齐
而大于成员大小之和,sizeof 会返回对齐后的总大小。
基本上就这些。sizeof 是理解 C++ 内存布局的基础工具,合理使用可以帮助你写出更高效、更安全的代码。
#include
using namespace std;
int main() {
cout << "int 大小: " << sizeof(int) << " 字节" << endl;
cout << "char 大小: " << sizeof(char) << " 字节" << endl;
double d;
cout << "double 变量大小: " << sizeof d << " 字节" << endl;
return 0;
}
int arr[10];
cout << "数组总大小: " << sizeof(arr) << " 字节" << endl; // 输出 40(假设 int 为 4 字节)
cout << "元素个数: " << sizeof(arr) / sizeof(arr[0]) << endl; // 计算数组长度
