在 C++ 中主要用 sizeof 运算符 获取数据类型/变量占用的内存字节数,下面分用法、示例、细节说明。
一、核心:sizeof 运算符
1. 基本语法
// 1. 作用于【数据类型】,必须加括号
sizeof(类型名)
// 2. 作用于【变量】,括号可省略
sizeof(变量名)
sizeof 变量名
返回值:size_t 类型(无符号整型),代表占用字节数。
二、完整代码示例
#include <iostream>
// 如需固定宽度类型可引入
#include <cstdint>
using namespace std;
int main()
{
// 1. 基础类型大小
cout << "bool: " << sizeof(bool) << endl;
cout << "char: " << sizeof(char) << endl;
cout << "short: " << sizeof(short) << endl;
cout << "int: " << sizeof(int) << endl;
cout << "long: " << sizeof(long) << endl;
cout << "long long: " << sizeof(long long) << endl;
cout << "float: " << sizeof(float) << endl;
cout << "double: " << sizeof(double) << endl;
cout << "long double: " << sizeof(long double) << endl;
// 2. 无符号类型
cout << "unsigned int: " << sizeof(unsigned int) << endl;
// 3. C++11 定长整型
cout << "int64_t: " << sizeof(int64_t) << endl;
// 4. 变量用法
int a = 10;
double b = 3.14;
cout << "变量a(int): " << sizeof(a) << endl;
cout << "变量b(double): " << sizeof b << endl; // 省略括号写法
// 5. 指针大小(区分32/64位系统)
int* p = nullptr;
cout << "指针: " << sizeof(p) << endl;
return 0;
}
三、关键知识点
1. 常量/表达式的 sizeof
sizeof 不会执行表达式,只判断类型:
int x = 0;
sizeof(x++); // x 不会自增,仅计算 int 大小
2. 数组的 sizeof
- 对数组名使用:得到整个数组总字节数
- 对数组指针使用:只得到指针大小
int arr[5];
cout << sizeof(arr); // 20(5个int,每个4字节)
int *p = arr;
cout << sizeof(p); // 4 / 8(取决于系统位数)
3. 字符串字面量
cout << sizeof("abc"); // 4,末尾隐含 '\0' 结束符
4. 结构体 / 类(内存对齐)
结构体大小不一定等于成员之和,编译器会做内存对齐:
struct Test {
char c;
int i;
};
cout << sizeof(Test);
// 通常结果:8 而非 5(对齐规则)
四、补充说明
sizeof是运算符,不是函数
仅作用于类型名时必须写括号;作用于变量可省略括号。- 平台差异
long、long double、指针的大小在 32 位 / 64 位 Windows/Linux 下结果不同,sizeof会自动适配当前运行平台。 - 输出类型提醒
sizeof返回size_t,搭配cout可直接输出;若用printf,格式符用%zu。
size_t s = sizeof(int);
printf("int 大小:%zu\n", s);

2980

被折叠的 条评论
为什么被折叠?



