细谈 C 之 sizeof

ANSI C 对 sizeof 的定义 (6.5.3.4 The sizeof operator): 限制 ( Constrains ) 1,sizeof 不能作用在以下类型上: 函数类型 未完成类型 位成员 语法 ( Semantics ) 2,sizeof 的结果是操作数的字节数大小,类型为无符号整型。 如果数组长度可变,那么会评估它的大小; 如果数组长度固定则返回一个常数; 3,具体的说: 如果是 char, unsigned char signed char 则返回 1; 如果数组长度固定则返回数组的字节大小; 如果是结构体或者共用体则结果就是这个类型实例的总大小; 举几个例子: 32 bit 系统上: sizeof (char) -> 1; int a[2]; sizeof (a) -> 8; 4,sizeof 的返回结果由具体编译器实现,类型是 size_t ,见 […]