【问题标题】:What is a non-field member of a structure or union?什么是结构或联合的非字段成员?
【发布时间】:2018-01-20 05:31:42
【问题描述】:

来自 K&R 的 C 编程语言:

结构或联合的非字段成员可以具有任何对象类型。

字段成员(不需要声明符,因此可能未命名)的类型为 int 、 unsigned int 或 signed int , 并被解释为指定整数类型的对象 比特长度;是否将 int 字段视为带符号的是 依赖于实现。

...

结构的非字段成员根据其类型在寻址边界处对齐;因此,可能存在未命名的孔 在一个结构中。

  1. 我认为结构或联合的成员被称为它的 字段。那么什么是结构或联合的非字段成员?如何 和外勤成员有区别吗?
  2. 你能解释一下“结构或联合的非字段成员可能有 任何对象类型”以及一些示例?
  3. 引用中的第二句是否意味着字段成员可以 只有 int、unsigned int 或 signed int 类型?
  4. 引用中的最后一句提到非字段成员是 对齐。字段成员是否对齐?如果没有,现场成员如何 存储在内存中?

谢谢。

【问题讨论】:

    标签: c


    【解决方案1】:

    字段成员现在称为bit field 成员:

    int i : 3;      // named bit-field member
    int : 5;        // unnamed bit-field member
    int j;          // non-bit-field member
    const char *s;  // non-bit-field member, non-integer type
    

    When to use bit-fields in C?

    【讨论】:

      猜你喜欢
      • 2022-11-02
      • 2014-02-13
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      相关资源
      最近更新 更多