sizeof()用法汇总

sizeof()用法汇总


sizeof()功能:计算数据空间的字节数
1.与strlen()比较
      strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。
      而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。
2.指针与静态数组的sizeof操作
      指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。
注意:int *p; sizeof(p)=4;
                  但sizeof(*p)相当于sizeof(int);      
      对于静态数组,sizeof可直接计算数组大小;
      例:int a[10];char b[]="hello";
              sizeof(a)等于4*10=40;
              sizeof(b)等于6;
 注意:数组做型参时,数组名称当作指针使用!!
               void  fun(char p[])
               {sizeof(p)等于4}

               


    char str[20]="0123456789";
    int a=strlen(str); //a=10;
    int b=sizeof(str); //而b=20;    
    char ss[] = "0123456789";    
    sizeof(ss) 结果 11 ===》ss是数组,计算到\0位置,因此是10+1   
    sizeof(*ss) 结果 1 ===》*ss是第一个字符
    char ss[100] = "0123456789";
    sizeof(ss) 结果是100 ===》ss表示在内存中的大小 100×1
    strlen(ss) 结果是10 ===》strlen是个函数内部实现是用一个循环计算到\0为止之前
    int ss[100] = "0123456789";
    sizeof(ss) 结果 400 ===》ss表示在内存中的大小 100×4
    strlen(ss) 错误 ===》strlen的参数只能是char* 且必须是以'\0'结尾的
    char q[]="abc";
    char p[]="a\n";
    sizeof(q),sizeof(p),strlen(q),strlen(p);     结果是 4 3 3 2
    
     一些朋友刚开始时把sizeof当作了求数组元素的个数,如今你应该知道这是不对的,那么应该怎么求数组元素的个数呢Easy,通常有下面两种写法:
     1.int c1 = sizeof( a1 ) / sizeof( char );         // 总长度/单个元素的长度
     2.int c2 = sizeof( a1 ) / sizeof( a1[0] );        // 总长度/第一个元素的长度    
 
     Student stus[4]={
        {"humingtao",24,99},
        {"zhaoweisong",23,66},
        {"chenfengchang",21,88},
        {"zhuwenpeng",20,77}
        
     数组长度  count = sizeof(stus)/sizeof(stus[0]
 
     
     double* (*a)[3][6];
     cout<<sizeof(a)<<endl; // 4 a为指针
     cout<<sizeof(*a)<<endl; // 72 *a为一个有3*6个指针元素的数组
     cout<<sizeof(**a)<<endl; // 24 **a为数组一维的6个指针
     cout<<sizeof(***a)<<endl; // 4 ***a为一维的第一个指针
     cout<<sizeof(****a)<<endl; // 8 ****a为一个double变量     
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值