转自:http://www.cnblogs.com/wangkangluo1/archive/2011/09/27/2193072.html
sizeof是C语言的一种单目操作符
sizeof操作符以字节形式给出了其操作数的存储大小,操作数可以是一个表达式或括在括号内的类型名,操作数的存储大小由操作数的类型决定。
sizeof(char)= 1;
sizeof(unsigned char) = 1;
sizeof(signed char)= 1;
sizeof(int)= 4;
sizeof(unsigned int)= 4;
sizeof(short int)= 2;
sizeof(unsigned short) = 2;
sizeof(long int)= 4;
sizeof(unsigned long)= 4;
sizeof(float)= 4;
sizeof(double)= 8;
sizeof(long double)= 12;
char *p; //Linux中
sizeof(p) = 4;
当操作数具有数组类型时,其结果是数组的总字节数。
例如: char a[5];
当操作数是具体的字符串或者数值时,会根据具体的类型进行相应转化。
当操作数是联合类型时,sizeof是其最大字节成员的字节数。
当操作数是结构类型时,sizeof是其成员类型的总字节数,包括补充字节在内。
还是让我们拿例子来说话:
struct a{
在Linux上: sizeof(a) = 12;
这是因为编译器在考虑对齐问题时,在结构中插入空位以控制各成员对象的地址对齐。