定义如下所示的结构时
typedef struct num {
int a;
int b;
} A;
然后sizeof(A)
有效,但sizeof(num)
不是。有人可以解释一下sizeof运算符不接受num
的原因吗?
答案 0 :(得分:2)
由于num
本身并不构成C中的类型(仅struct num
或其typedef A
构成类型)。因此,sizeof
失败,因为它的操作数不是为其定义的任何形式:
sizeof unary-expression
sizeof ( type-name )
即。 num
既不是类型也不是一元表达式。
因此,sizeof(struct num)
或sizeof(A)
可以,但sizeof(num)
不是。