分类
Level3

sizeof函数

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; 
}