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
或其typedefa
构成类型)。因此,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!当然,大脑错误。我会删除。谢谢