sizeof的基本用法的整理

该文章只是用来记忆,如果有错误,希望大神们能够告知小弟进行改正。

sizeof是c/c++中判断类型长度符的操作符,而不是函数。

默认sizeof是在编译期执行的,但是在C99标准中规定,sizeof也可以在运行时刻进行计算,所以sizeof能够正确计算动态数组的长度。

一. 基本类型的sizeof()

        对于基本类型,sizeof都将等于其基本类型的长度

                sizeof(int);           //值为4

                sizeof(double);    //值为8

                sizeof(10);          //值为4

                sizeof(8.8);        //值为8


二. 数组类型的sizeof()

        (1) 对于静态数组类型,sizeof都将等于其定义时的长度

                int a[3];

                sizeof(a);   //值为3

        (2) 对于动态数组类型,sizeof都将等于其定义时的长度(此时sizeof在运行时刻进行计算)

                int n;

                scanf("%d", &n);

                char a[n];

                sizeof(a);  //值为输入的n的值


三. 指针类型的sizeof()

        对于指针类型,sizeof都将等于计算机内部地址总线的长度,32位机器将等于4

              char *p;

              sizeof(p);  //值为4


四.结构体类型的sizeof()

       字节对齐的三个原则:

                (1) 结构体成员的首地址能够被其最长基本类型成员的大小整除。

                (2) 结构体每个成员相对于结构体首地址的偏移量,都是这个成员大小的整数倍,如有需要编译器会自动为这个成员进行填充。

                (3) 结构体的总大小为结构体最长基本类型成员的大小的整数倍,如有需要将在最后一个成员后进行填充。

       根据进行字节对齐后的结构体计算出sizeof的值

              struct s1{

                     char a;

                     int b;

              }

              sizeof(s1);    //值为8, char类型向最长基本类型成员int对齐

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值