c - 作为 sizeof 操作数的结构名称

标签 c struct sizeof

当您定义如下结构时

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 ) 

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

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

关于c - 作为 sizeof 操作数的结构名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39788896/

相关文章:

c - 将函数作为参数传递,带或不带 & 符号 c

C - 看门狗定时器未启动或调用回调函数

c++ - C++ 结构中的奇怪行为

c - 64 位上的 int 与 size_t

python - 使用非默认 Apache Web 服务器编译 mod_wsgi?

c - 无法将结构数组的变量作为函数参数传递

c - 将指向同类型结构成员的结构的指针分配给指向同类型结构的另一个指针

c++ - 结构 vector ,我不知道该怎么做

c - 什么是最合适的结构 sizeof 方法

c++ - 为什么 std::bitset 建议的可用位比 sizeof 所说的更多?