C/C++基本数据类型所占字节数以及sizeof运算符的使用

本文详细解析了C++中基本数据类型所占用的字节数,并介绍了sizeof运算符的使用方法及注意事项,包括如何计算结构体的大小。通过实例演示了如何在不同编译器环境下正确应用sizeof运算符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本数据类型所占字节大小:
32位编译器(指针4字节)
char :1个字节
short int :4 字节
int:  4个字节

long:   4个字节

double:   8个字节
long long:  8个字节
64位编译器(指针8字节)
char :1个字节
short int : 2个字节
int:  4个字节
double:   8个字节
long:   8个字节(32位和64位变得就是long,其他的均没有变化啊)
long long:  8个字节
  1. 定义:简单的说其作用就是返回一个对象或者类型所占的内存字节数。
  2. 用法:sizeof(对象/类型).对于基本数据类型和指针,sizeof返回的是所占字节数。
  3. 对于结构体的sizeof操作符,满足:
  4. 1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除
    2) 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍
    如有需要编译器会在成员之间加上填充字节(internal adding);
    3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最
    末一个成员之后加上填充字节(trailing padding)。
  5. #pragma pack(push) // 将当前pack设置压栈保存
    #pragma pack(2)// 必须在结构体定义之前使用
    struct S1
    {
    char c;
    int i;
    };//sizeof(S1) = 6
    struct S3
    {
    char c1;
    S1 s;
    char c2
    };sizeof(S3) = 10
    #pragma pack(pop) // 恢复先前的pack设置

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值