zoukankan      html  css  js  c++  java
  • sizeof与strlen

    • sizeof()计算一个类型的空间大小
    • strlen只用于计算字符串长度,寻找''的位置,但是不包括''位置
    • 例一:
      int b=strlen("b");
      int a=sizeof("b");

      输出b=0;a=3;  a为计算的该字符串所占的空间大小;

    • 例二:
      char a[10];
      char *b=new char[10];
      int x=sizeof(a);   //x=10;
      int y=sizeof(b);   //y=4;
      int z=sizeof(*b); //z=1;

      x计算的是数组所占的空间大小;
      y计算的是字符指针b所占的空间大小,32位机中所有的指针变量所占的空间大小为4个字节;
      z计算的是指针b所指向的第一个字符所占的空间大小,char型空间为1个字节;

    • 例三:
      char a[10];
      char *b=new char[10];
      int x=strlen(a); //随机数
      int y=strlen(b);  //随机数
      strcpy(b,"hello");
      int z=strlen(b); //z=5;
    • sizeof在计算结构体变量的空间时,需要遵循两个规则:
      1)结构体每个成员的首地址是成员大小的整数倍,有需要会在成员之间填充字节;
      2)结构体的总空间大小为最宽基本成员类型的整数倍。在寻找最宽成员时,需要将复合类型“打散”来看,比如结构体内包含另一个结构体,则把另一个结构体拆开来看。
      struct S1{
        int a;
        char b;    
      };//4+1+3=8
      struct s2{
        char c;
        S1 s;
        char d;      
      };//1+3+4+1+1+2=12,12是int型空间的整数倍
  • 相关阅读:
    火柴排队sol
    国王游戏sol
    子串sol
    跳石头
    解方程sol
    花匠sol
    字符串整理
    计算系数
    矩阵取数游戏sol
    8.2_java_28
  • 原文地址:https://www.cnblogs.com/beaglebone/p/5726588.html
Copyright © 2011-2022 走看看