关于sizeof

(1)内置类型

      sizeof(char*) = 4;

       sizeof(int) = sizeof(long)  = sizeof(float)= 4;

      sizeof(枚举) = 4;

      sizeof(double) = 8;

      sizeof(false) = sizeof(true) = sizeof(char) = 1;

    

(2)typedef struct ST

      {

             char* d1;

             long d2;

            char d4[0];

       }  TT;

      sizeof(TT) = ;

     结果 8 , 对于取结构体大小,主要为变量对应的内置类型中字节最大的值的整数倍。

    意思是说:sizeof(char*) = 4;sizeof(long) = 4;sizeof(d4[0]) = 0; 结果为4的整数倍及8。

   注: char d4[0]; 比较特殊,它的大小应该为0,但是它只能放在结构体的最后,且不能单独使用。

  及:

   {char d4[0];}  或 {char d4[0]; long i;} 均是编译不过的。

   此外  

typedef struct ST2

      {

             char* d1;

             short int d2;

            char d4[10];

          char t1;

       }  TT2;

  sizeof(TT2) =  18;按上面的理论结果是不成立的 。此时就是各个变量大小相加,奇数个char是看成偶数,

 及:4+2+10+2;

(3)char t[] = {123456789};

     sizeof(t) = 10;

    strlen(t) = 9;

    sizeof(&(t[0])) = 4;

    strlen(&t[0]) = 9;

   strlen(&t[1]) = 8;

  根据上面的答案比较好理解了。

 

    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值