b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

C-sizeof和strlen之间的区别,以及sizeof如何计算结构的大小

电脑杂谈  发布时间:2020-03-30 12:07:00  来源:网络整理

sizeof计算结构体大小_卵细胞的结构大小形状还有其他_sizeof计算结构体大小

sizeofstrlen之间的区别

sizeof是可以在编译时计算的关键字. 任何类型的strlen都可以作为函数进行计算. 它只能在运行时计算,并且只能作为字符计算.

对于数组,strlen将'\ 0'判断为标志的末尾,sizeof计算数组的整个空间.

示例如下:

卵细胞的结构大小形状还有其他_sizeof计算结构体大小_sizeof计算结构体大小

char buf1[]="abcde";
char buf2[30]="ABC";
printf("buf1: %d %d\n",sizeof(buf1),strlen(buf1));
printf("buf2: %d %d\n",sizeof(buf2),strlen(buf2));

打印如下:

\

可以看出,当我们的buf1没有指定长度时sizeof计算结构体大小,sizeof打印6sizeof计算结构体大小,因为它还包括“ \ 0”.

卵细胞的结构大小形状还有其他_sizeof计算结构体大小_sizeof计算结构体大小

sizeof也可以计算类型大小. 通常,对于32位C程序,相应的long为4个字节.

如下所示:

\

示例:

sizeof计算结构体大小_sizeof计算结构体大小_卵细胞的结构大小形状还有其他

printf("char: %d\n",sizeof(char));
printf("short: %d\n",sizeof(short)); 
printf("int: %d\n",sizeof(int));
printf("long: %d\n",sizeof(long)); 
printf("long long: %d\n",sizeof(long long));
printf("float: %d\n",sizeof(float)); 
printf("double: %d\n",sizeof(double));

打印如下:

sizeof计算结构大小

为了加快读取和读取结构内容的速度,计算机将字节对齐结构.

卵细胞的结构大小形状还有其他_sizeof计算结构体大小_sizeof计算结构体大小

字节对齐的规则是: 结构的大小必须是最大成员的倍数(易于处理)

示例1:

struct TestA{
  short a;
  long b;    //b=4, a=1,而5%4=1,所以会在a上面补齐3字节,所以s1=8
};
struct TestB{
  char c;
  TestA d;    
  int f;    //c=1,d=8,f=4,而1+8+4=13,13%8=5,还差3字节,所以会在c上面补齐3字节, s2=16
};
int main()
{
  printf("%d\n",sizeof(TestA));
  printf("%d\n",sizeof(TestB));
}

打印如下:

\

示例2:

struct TestA {
  short a;
  long b;    //s1=8,之前已经分析过
};
struct TestB{
  char c;
  TestA d;    
  long long f;    //c=1,s1=8,f=8,由于8最大,且17%8=1,所以会在c上面补齐7字节,则s2=24
};
int main()
{
  printf("%d\n",sizeof(TestA));
  printf("%d\n",sizeof(TestB));
}

打印如下:


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-157712-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 李昱婕
        李昱婕

        但诺列加虽是毒枭却很爱国

      热点图片
      拼命载入中...