代码之家  ›  专栏  ›  技术社区  ›  Liran Orevi

使用方括号和与号获取地址

  •  4
  • Liran Orevi  · 技术社区  · 16 年前

    考虑:

    int a[2] = {0,1};
    int *address_of_second = (&a[1]);
    

    这是一种体面的写作方式吗?

    int *address_of_second = a+1
    

    谢谢。

    3 回复  |  直到 16 年前
        1
  •  9
  •   Matthew Iselin    16 年前

    和*互相取消,但我可以吗

    a[1] *(a + 1) ,以及 &a[1] &(*(a + 1)) ,这会给你一个指针( & * )int at a + 1 这是一种明确的行为,你可以信赖。

    int *address_of_second = a+1

    这是可读的,但不如 &a[1] 在我看来。 &a[1] 明确表明 a a+1 推断 它是一个指针,但据你所知,它只是一个指针 可能只是一个 int ).

        2
  •  1
  •   vehomzzz    16 年前

    我更喜欢前者:)

        3
  •  1
  •   Jon Bright    16 年前

    两者都可以。我个人更喜欢其中之一 &(a[1]) a+1 。我更喜欢第一个括号的位置,因为它非常清楚我要取的地址是什么。我倾向于在大多数情况下使用它。如果所讨论的代码进行了大量的指针运算,那么我可能会使用第二种形式。