【问题标题】:Name of structure as the operand of the sizeof结构名称作为 sizeof 的操作数
【发布时间】:2016-09-30 10:03:44
【问题描述】:

当您定义如下结构时

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

那么sizeof(A) 有效,但sizeof(num) 无效。谁能解释一下 sizeof 运算符不接受num 的原因?

【问题讨论】:

  • num 是一个标签,而不是一个类型。所以sizeof(num) 无效,但sizeof(struct num) 没问题。
  • @unwind 谢谢你的评论!我认为的大小是一个函数...
  • @unwind 在这种情况下,sizeof A 不起作用。由于A 是一个类型,sizeof 需要括号。
  • @IanAbbott D'oh!当然是脑残。我会删除。谢谢。

标签: c struct sizeof


【解决方案1】:

因为num 本身并不构成C 中的type(只有struct num 或其typedef A 构成type)。因此,sizeof 失败,因为它的操作数不是它定义的任何一种形式:

sizeof unary-expression
sizeof ( type-name ) 

num 既不是 type 也不是 unary-expression

所以,sizeof(struct num)sizeof(A) 可以,但 sizeof(num) 不行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 2017-01-09
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    相关资源
    最近更新 更多