C语言—sizeof运算符

在C语言中,sizeof 运算符用于确定任何数据类型或对象在内存中占用的字节数。这个运算符在编译时被求值,所以它的结果是一个编译时常量,这意味着它可以用在任何需要常量表达式的地方,比如数组的大小。

使用 sizeof 的方式:

  • 获取数据类型的大小:可以用 sizeof 来获取基本数据类型(如 int、float、char 等)或结构体、联合等复合数据类型的大小。
size_t size = sizeof(int);
  • 获取数组的大小:用 sizeof 来获取整个数组的大小(以字节为单位),或者数组中单个元素的大小。
int arr[10];
size_t arrSize = sizeof(arr);  // 获取整个数组的大小
size_t elemSize = sizeof(arr[0]);  // 获取数组单个元素的大小
  • 获取指针类型的大小:当用于指针时,sizeof 返回指针本身的大小,而不是指针指向的数据的大小。
int *ptr;
size_t ptrSize = sizeof(ptr);  // 获取指针的大小,而不是指针指向的数据的大小

举例

#include <stdio.h>

int main() {
    int intVar;
    float floatVar;
    char charVar;

    printf("Size of int: %zu bytes\n", sizeof(intVar));
    printf("Size of float: %zu bytes\n", sizeof(floatVar));
    printf("Size of char: %zu byte\n", sizeof(charVar));

    int arr[20];
    printf("Size of int array with 20 elements: %zu bytes\n", sizeof(arr));
    printf("Size of one element of int array: %zu bytes\n", sizeof(arr[0]));

    return 0;
}

类型和表达式:sizeof 可以接受一个类型,如 sizeof(int),也可以接受一个表达式,如 sizeof(x)。当用于表达式时,表达式不会被实际求值。sizeof(类型)时括号可以去掉,但是 sizeof(变量)时也可以去掉括号。

指针大小:sizeof 用于指针时,它给出的是指针本身的大小,而不是指针所指向的数据的大小。在大多数现代架构上,无论指针类型如何,指针的大小通常都是固定的(例如,在64位系统上通常是8字节)。

数组和指针的区别:对于数组,sizeof 返回整个数组的大小;而对于指针,它返回指针本身的大小。这一点在处理动态分配的数组(即通过指针访问的数组)时尤为重要。

结构体和填充:使用 sizeof 获取结构体大小时,结果可能包含了因对齐要求而引入的填充字节。

返回类型:sizeof 返回 size_t 类型的值,这是一个无符号整型,定义在 <stddef.h> 中。

常量表达式:由于 sizeof 在编译时求值,它产生的是常量表达式。这意味着可以用 sizeof 来定义数组的大小或者作为 case 语句的标签等。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI1.0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值