牛骨文教育服务平台(让学习变的简单)
博文笔记

sizeof(struct)说明

创建时间:2015-08-29 投稿人: 浏览次数:694

struct结构体中,对于对齐方式,首先以遇到的第一个类型对齐,之后以第二个类型对齐,之后依次,但遇到最大类型后,后面的全部以最大类型对齐。

系统如64位系统,则最大为8个字节。实例:

     printf("char字节为:%d ",sizeof(char));  //1
      printf("short字节为:%d ",sizeof(short));  //2
      printf("int字节为:%d ",sizeof(int));   //4


  struct MyStruct7{
         char a;
         short b;
         int c;
         char d;
      }t7;           //sizeof(t7)  ///此为1个字节,没有遇到更大的



  struct MyStruct6{
         char a;
         short b;
         int c;
         char d;
      }t6;

 printf("%d ",sizeof(t6));  //为12

首先char占据一个字节,之后遇到short 2B,则此时2B较大,故以2B补齐,此时a占2B,b占2B,遇到第三个c,4B,此时正好占满8B。

之后d为1B,但此时最大的为4B,必须补齐,故此时为12


char str[]="Tencent" sizeof(str)为8   Tencent’,所以长度为8
har* ch   sizeof(ch)其为指针,如果为win32,则为4


下面为参考善于总结的博客上,各个字节的大小;网址:http://blog.csdn.net/lyl0625/article/details/7350045

C语言中,各类型所占的字节数与机器字长及编译器有关系:

编译器类型 类型 占的字节数
16位编译器 char 1B
  char *(指针变量) 2B
  short int 2B
  int 2B
  unsigned int 2B
  float 4B
  double 8
  long 4
  long long 8
  unsigned long 4
32位编译器 char
1
  char*(指针变量) 4B(32位的寻址空间)
  short int 2
  int 4
  unsigned int 4
  float 4
  double 8
  long
4
  long long 8
  ungigned long 4
64位编译器
char
1
  char*(指针变量) 8
  short int 2
  int 4
  unsigned int 4
  float 4
  double 8
  long
8
  long long 8
  unsigned  long 8






声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。