sizeof 是 C++ 中的一个运算符,用于获取数据类型或对象在内存中所占的字节数。它是编译时运算符,意味着它在编译阶段就会计算出结果,而不是在运行时。
1. 获取基本数据类型的大小
int a;
double b;
cout << sizeof(a) << endl;// 输出:4(通常是4字节,具体平台依赖)
cout << sizeof(b) << endl;// 输出:8(通常是8字节,具体平台依赖)
cout << sizeof(int) << endl; // 输出:4
cout << sizeof(double) << endl; // 输出:8
cout << sizeof(char) << endl; // 输出:1
cout << sizeof(float) << endl; // 输出:4
2. 获取数组大小 注意: sizeof 获取的是整个数组的大小,而不是数组中元素的个数。上面的例子中,数组有 10 个 int 类型元素,每个 int 占 4 字节,所以总大小是 40 字节。
int arr[10];
cout << sizeof(arr) << endl;// 输出:40(10个int,每个占4字节)
如果要获取数组的元素个数,可以使用:
cout << sizeof(arr) / sizeof(arr[0]) << endl; // 输出:10
3. 获取指针大小 注意: sizeof(p) 返回的是指针本身的大小,而不是指针指向的对象的大小。
int* p;
cout << sizeof(p) << endl; // 输出:8(在64位系统中,指针通常占8字节
4. 获取结构体的大小 注意: 结构体的大小可能会比它所有成员的总和大,因为编译器通常会为对齐而插入填充字节。具体填充方式依赖于平台和编译器。
struct MyStruct {
int a;
double b;
char c;
};
cout << sizeof(MyStruct) << endl; // 输出:16(根据编译器和平台,可能有填充字节)
5. 计算字符串长度 比如:”Hello, World!” 是一个字符串常量,长度为 13 个字符,包含一个额外的 ‘\0’ 字符。因此,sizeof(“Hello, World!”) 会输出 14。
#include <bits/stdc++.h>
using namespace std;
int main(){
cout<<sizeof("Hello, World!"); //输出:14
return 0;
}