关于struct它所占的字节,大家都知道是它里面所有的变量所占字节的和,看看下面,大家是不是有点诧异啊,反正我是挺诧异的
#include<stdio.h>int main(void) { struct Test { char *pcName; short sDate; }; struct Test_1 { char *pcName; char sDate; }; struct Test_2 { char *pcName; double sDate; }; struct Test_3 { char *pcName; short sDate; char a; }; printf("char *和short = %d\n",sizeof(Test)); printf("char *和char = %d\n",sizeof(Test_1)); printf("char *和double = %d\n",sizeof(Test_2)); printf("char,char *和short = %d\n",sizeof(Test_3)); return 0; }
后来发现,它有个对齐的法则,就是说它以占用最大的那个变量对齐,如果有两个变量,它的内存是以占用最多字节的变量的成倍来算的。