文档介绍:,最基本的char,1字节,short2字节,int4字节,任何的指针都是4字节,sizeof(数组名)=数组占的大小(这里必须注意虽然数组名可作为数组首地址的指针,但是sizeof(数组名)求得的不是指针的大小,而是数组大小),还有就是sizeof(结构体),sizeof(联合体)举两个例子:structstu{chara;intb;        charc; };structteacher{chara;charc;         intb;};sizeof(stu)=12;内存中这样存储:char空空空,int,char空空空,内存4字节对齐问题;sizeof(teacher)=8;内存中这样存储:charchar空空,int;关于联合体Unionstd{chara[10];        intb[3];}; sizeof(std)=12;联合体公用内存,取其中所占内存最大的元素为联合体所占内存。++程序,请计算sizeof的值char  str[]=“Hello”;sizeof(str)=  6 ;char  *p=str;sizeof(p)=  4 ;int    n=10;sizeof(n)=  4 ;voidFunc(charstr[100]){sizeof(str)= 4(数组退化为指针);}void*p=malloc(100);sizeof(p)=  4;:structbit{  inta:3;    int b:2;    intc:3;};intmain(){bits;  char*c=(char*)&s;   cout<<sizeof(bit)<<endl;  *c=0x99;   cout<<<<endl<<<<endl<<<<endl;     inta=-1;   printf("%x",a);  return0;}输出是:41-1-4ffffffff因为0x99在内存中表示为10011001,a=001,b=11,c=100,当c为有符合数时,c=100,最高1为表示c为负数,负数在计算机用补码表示,所以c=-4;同理b=-1;当c为有符号数时,c=100,即c=4,同理b=3;(补码:正数的补码是其本身,负数的补码是最高位不变,其他位取反加1,再加最高位的负号即可)位域:有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。,其形式为:struct位域结构名 {位域列表}; 其中位域列表的形式为:类型说明符位域名:位域长度 例如:structbs  {inta:8; intb:2; intc:6; };   位域变量的说明与结构变量说明的方式相同。可采用先定义后说明,同时定义说明或者直接说明这三种方