background image

解析 语言中的 sizeof

一、sizeof

 

的概念

  sizeof 是 C 语言的一种单目操作符,如 C 语言的其他操作符++、--等。它并不是函数 。
sizeof 操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括

 

号内的类型名。操作数的存储大小由操作数的类型决定。

二、sizeof

 

的使用方法

  1

 

、用于数据类型

  sizeof 使用形式:sizeof(type  

  数据类型必须用括号括住。如 sizeof(int

 

)。

  2

 

、用于变量

  sizeof 使用形式:sizeof(var_name)或 sizeof var_name 

  变量名可以不用括号括住。如 sizeof (var_name),sizeof var_name 等都是正确形式。带

 

括号的用法更普遍,大多数程序员采用这种形式。

  注意:sizeof 操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未
知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void

 

类型等。

  如 sizeof(max)若此时变量 max 定义为 int max(),sizeof(char_v) 若此时 char_v 定义为
char char_v [MAX]且 MAX 未知,sizeof(void)

 

都不是正确形式。

三、sizeof

 

的结果

  sizeof 操作符的结果类型是 size_t,它在头文件<stddef.h>中 typedef 为 unsigned int 类

 

型。该类型保证能容纳实现所建立的最大对象的字节大小。

  1、若操作数具有类型 char、unsigned char 或 signed char,其结果等于 1  

  ANSI C 正式规定字符类型为 1

 

字节。

  2、int、unsigned int 、short int、unsigned short 、long int 、unsigned long 、float、double、long 
double 类型的 sizeof 在 ANSI C 中没有具体规定,大小依赖于实现,一般可能分别为
2、2、2、2、4、4、4、8、10

 

  3、当操作数是指针时,sizeof 依赖于编译器。例如 Microsoft C/C++7.0 中,near 类指针
字节数为 2,far、huge 类指针字节数为 4。一般 Unix 的指针字节数为 4  

  4

 

、当操作数具有数组类型时,其结果是数组的总字节数。