代码之家  ›  专栏  ›  技术社区  ›  mduvall

C和指针表示法

  •  5
  • mduvall  · 技术社区  · 16 年前

    (foo)->next = 5;
    

    我知道指针表示法有优先级,例如->=(*foo)。并且与*foo不同。

    3 回复  |  直到 16 年前
        1
  •  6
  •   abelenky    16 年前

    这是我以前从未见过的编码惯例。

    但这并没有改变任何事情。

    (foo)->next = 5;
    

    foo->next = 5;
    
        2
  •  2
  •   Andy Dent    16 年前

    这是一种安全编码惯例。

    (foo)->next = 5;
    

    但是,请考虑是否存在或 foo可能由宏定义,因此它是一个更复杂的表达式。

    ( ++get_foo() )->next = 5;
    

    ( (db_record*)foo_ptr )->next = 5;
    

    地道的

        3
  •  1
  •   Robert Cartaino    16 年前

    这毫无意义。括号没有效果,因为括号内的表达式非常简单。基本上是

    (*(foo)).next = 5;