sizeof函数用法说明

sizeof 是 C/C++ 中的一个运算符,用来计算变量或数据类型所占的内存大小,单位是字节。其返回值是 size_t 类型,表示某种类型或对象的字节数。

用法:

  1. 计算基本数据类型的大小:

    printf("Size of int: %zu bytes\\\\n", sizeof(int));     // 输出整型的大小
    printf("Size of char: %zu bytes\\\\n", sizeof(char));   // 输出字符型的大小
    printf("Size of float: %zu bytes\\\\n", sizeof(float)); // 输出浮点型的大小
    
    
  2. 计算变量的大小:

    int a = 10;
    printf("Size of variable a: %zu bytes\\\\n", sizeof(a)); // 计算变量 a 所占的内存大小
    
    
  3. 计算数组的大小:

    int arr[10];
    printf("Size of array: %zu bytes\\\\n", sizeof(arr));      // 输出整个数组的大小
    printf("Size of array element: %zu bytes\\\\n", sizeof(arr[0])); // 输出数组中一个元素的大小
    
    
  4. 计算结构体的大小:

    struct Example {
        int a;
        double b;
        char c;
    };
    
    printf("Size of struct Example: %zu bytes\\\\n", sizeof(struct Example)); // 计算结构体的大小
    
    
  5. 与指针的使用区别:

    对于指针,sizeof 返回的是指针本身的大小,而不是它所指向的内容的大小。例如,在 64 位系统中,指针通常占 8 字节。

    int *ptr;
    printf("Size of pointer: %zu bytes\\\\n", sizeof(ptr));     // 返回指针自身的大小
    printf("Size of dereferenced pointer: %zu bytes\\\\n", sizeof(*ptr)); // 返回指针指向的变量的大小
    
    

sizeof 的特点:

  • 编译期计算: sizeof 是在编译时计算的,而不是运行时,这使得它非常高效。
  • 不执行表达式: sizeof 不会对其参数进行求值,它只关心类型或表达式的类型。比如 sizeof(++x) 不会真正增加 x 的值。

常见的错误用法:

  • 在函数参数为数组时:

    如果你将一个数组作为函数参数传递,它会被退化为指针。在这种情况下,使用 sizeof 来计算数组的大小将返回指针的大小,而不是数组的实际大小。

    void func(int arr[10]) {
        printf("Size of arr: %zu bytes\\\\n", sizeof(arr)); // 结果是指针的大小,而不是数组
    }
    
    

总结

  • sizeof 可以用于数据类型、变量、数组、结构体等,返回它们在内存中的大小,单位是字节。
  • 它在编译期计算,运行时效率高。
  • 注意当数组退化为指针时,sizeof 返回的是指针的大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值