代码之家  ›  专栏  ›  技术社区  ›  RobertS supports Monica Cellio

如何使用由复合文本定义的结构的成员?

  •  0
  • RobertS supports Monica Cellio  · 技术社区  · 5 年前

    我找到了这段代码,它使用一个指针指向由复合文本构成的结构:

    int main()
    {
       struct s {int i; int x;} *p;
       int j = 0;
    
       p = &((struct s){ j++ });
    }
    

    • 怎么样 j++ 用于修改的有效表达式 i 和/或 x 它得到了什么评价?
    • 我如何才能访问该成员 p ?
    1 回复  |  直到 5 年前
        1
  •  2
  •   Barmar    5 年前

    在复合文本中,任何未指定的成员都会得到默认初始化,就像对象的初始值设定项列表一样。所以

    (struct s){ j++ })
    

    相当于

    (struct s){ j++, 0 })
    

    j++ j j型 是递增的,就像在任何其他赋值中一样。所以这就定了 p->i = 0 j = 1

    可以使用指针取消引用来访问成员。

    int x = p->x;
    int i = p->i;
    
    推荐文章