C 作为sizeof操作数的结构名称

C 作为sizeof操作数的结构名称,c,struct,sizeof,C,Struct,Sizeof,当您定义如下所示的结构时 typedef struct num { int a; int b; } A; 然后sizeof(A)有效,但sizeof(num)无效。有人能解释一下sizeof运算符不接受num的原因吗 因为num本身并不构成C中的类型(只有struct num或其typedefa构成类型)。因此,sizeof失败,因为它的操作数不是为以下两种形式定义的: sizeof unary-expression sizeof ( type-name ) i、 e.

当您定义如下所示的结构时

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

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

因为
num
本身并不构成C中的类型(只有
struct num
或其typedef
a
构成类型)。因此,
sizeof
失败,因为它的操作数不是为以下两种形式定义的:

sizeof unary-expression
sizeof ( type-name ) 
i、 e.
num
既不是类型也不是一元表达式


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

num
是一个标记,而不是一个类型。因此
sizeof(num)
无效,但
sizeof(struct num)
可以。@unwind感谢您的评论!我认为的大小是一个函数…@unwind在这种情况下,
sizeof a
不起作用。由于
A
是一种类型,
sizeof
需要括号。@IanAbbott D'oh!当然,大脑错误。我会删除。谢谢