📜  sizeof运算符的结果(1)

📅  最后修改于: 2023-12-03 14:47:28.140000             🧑  作者: Mango

sizeof运算符

sizeof 运算符是一个在 C、C++ 和其他一些支持它的编程语言中可用的操作符,用来计算数据类型的大小,即在内存中分配的字节数。

语法

sizeof 运算符的语法如下:

sizeof(type)
sizeof(expression)

其中,type 可以是任意的 C 数据类型(如 intdoublecharstruct 等等),expression 可以是任意的 C 表达式。

返回值

sizeof 运算符返回的是指定类型或表达式所占用的字节数。注意,sizeof 返回的大小是 size_t 类型的无符号整数。

示例

下面是一些 sizeof 运算符的示例:

#include <stdio.h>

int main() {
    // 计算 int 类型所占用的字节数,并输出结果
    printf("sizeof(int) = %zu\n", sizeof(int));

    // 计算 char 类型所占用的字节数,并输出结果
    printf("sizeof(char) = %zu\n", sizeof(char));

    // 计算数组长度并输出结果
    int arr[] = {1, 2, 3, 4, 5};
    int len = sizeof(arr) / sizeof(arr[0]);
    printf("arr 长度为 %d\n", len);

    // 计算结构体大小并输出结果
    struct my_struct {
        int a;
        char b;
        double c;
    };
    printf("sizeof(struct my_struct) = %zu\n", sizeof(struct my_struct));

    return 0;
}

输出结果如下:

sizeof(int) = 4
sizeof(char) = 1
arr 长度为 5
sizeof(struct my_struct) = 16
注意事项
  • sizeof 运算符只是计算数据类型或表达式本身所占的字节数,不会考虑该类型或表达式指向的内容所占用的空间。
  • sizeof 运算符可以用来计算数组长度,但只能用在已经定义了数组变量的地方。不能用于函数参数中的数组,因为在函数参数中数组会被自动转换成指针类型。
  • 在 C++ 中,类的大小可能会受到编译器的优化影响,因此 sizeof 运算符返回的大小可能并不总是准确的。如果需要准确地计算类的大小,请使用 sizeof 运算符和 alignof 运算符的结合,或使用 std::size 函数。