网站首页 网站地图
网站首页 > 游戏秘籍 > sizeof函数

sizeof函数

时间:2026-04-01 17:17:47

sizeof 是 C/C++ 中的一个操作符,用于获取变量、类型或对象所占的内存字节数。它是一个编译时操作符,在编译阶段就确定了变量的大小。

✅ 一、基本用法

1. 获取变量的大小

#include <iostream>

int main() {
    int a = 10;
    std::cout << "sizeof(int) = " << sizeof(int) << " bytes" << std::endl; // 输出: 4 bytes
    std::cout << "sizeof(a) = " << sizeof(a) << " bytes" << std::endl;   // 输出: 4 bytes
    std::cout << "sizeof(float) = " << sizeof(float) << " bytes" << std::endl; // 输出: 4 bytes
    std::cout << "sizeof(double) = " << sizeof(double) << " bytes" << std::endl; // 输出: 8 bytes
    return 0;
}

2. 获取类型大小

#include <iostream>

int main() {
    std::cout << "sizeof(int) = " << sizeof(int) << " bytes" << std::endl; // 4 bytes
    std::cout << "sizeof(float) = " << sizeof(float) << " bytes" << std::endl; // 4 bytes
    std::cout << "sizeof(double) = " << sizeof(double) << " bytes" << std::endl; // 8 bytes
    std::cout << "sizeof(long double) = " << sizeof(long double) << " bytes" << std::endl; // 16 bytes
    return 0;
}

✅ 二、sizeof 的特点

特性 说明
编译时计算 sizeof 是编译时操作符,不会在运行时计算。
返回的是字节数 返回的是 size_t 类型的值,单位是字节。
不带类型 sizeof 不需要类型,直接写在变量或类型后面。
支持类型 可以直接写类型,例如 sizeof(int),也可以写变量名。
支持结构体、数组、指针等 可以用于任何类型,包括结构体、数组、指针等。

✅ 三、常见用法示例

1. 结构体大小

struct MyStruct {
    int a;
    float b;
};

int main() {
    std::cout << "sizeof(MyStruct) = " << sizeof(MyStruct) << " bytes" << std::endl; // 输出: 8 bytes
    return 0;
}

2. 数组大小

int arr[10];
std::cout << "sizeof(arr) = " << sizeof(arr) << " bytes" << std::endl; // 输出: 40 bytes

3. 指针大小

int* ptr = new int;
std::cout << "sizeof(ptr) = " << sizeof(ptr) << " bytes" << std::endl; // 输出: 8 bytes

✅ 四、sizeof 的注意事项

  1. 不能用于变量sizeof 不能直接用于变量,只能用于类型或变量名。

    int a;
    std::cout << sizeof(a); // 正确
    // std::cout << sizeof(a); // 错误(变量名不能直接用于 sizeof)
  2. 不能用于数组元素sizeof 不能直接用于数组元素。

    int arr[10];
    std::cout << sizeof(arr[0]); // 错误
  3. sizeof 会返回 size_t 类型sizeof 的返回值是 size_t,在 C++11 之后支持 sizeof 的返回值为 size_t

✅ 五、总结

项目 说明
操作符 sizeof
作用 获取变量、类型或对象的内存大小
返回值 size_t 类型,单位是字节
使用方式 sizeof(类型)sizeof(变量名)
适用范围 所有类型(包括结构体、数组、指针等)

如果你有具体的代码想分析,或者想知道 sizeof 在某些特定场景下的使用,欢迎继续提问!