结构名称作为sizeof的操作数

时间:2016-09-30 10:03:45

标签: c struct sizeof

定义如下所示的结构时

typedef struct num {
   int a; 
   int b; 
} A;  

然后sizeof(A)有效,但sizeof(num)不是。有人可以解释一下sizeof运算符不接受num的原因吗?

1 个答案:

答案 0 :(得分:2)

由于num本身并不构成C中的类型(仅struct num或其typedef A构成类型)。因此,sizeof失败,因为它的操作数不是为其定义的任何形式:

sizeof unary-expression
sizeof ( type-name ) 

即。 num既不是类型也不是一元表达式

因此,sizeof(struct num)sizeof(A)可以,但sizeof(num)不是。