【问题标题】:Semantic difference between different pointer syntax in c++?c ++中不同指针语法之间的语义差异?
【发布时间】:2012-11-14 22:09:51
【问题描述】:

在 C++ 中,这种形式 int *p 在语义上是否与这种 int* p 不同?或者这显然是风格问题?

现在这个问题可能很愚蠢,但我记得我曾在某处看到同时使用两种样式,这让我相信这些形式之间可能存在不同的语义.

【问题讨论】:

  • int* p int *p int * p int*p - 所有有效所有语义相同
  • 请注意,bjarne 在his faq 中回答了这个问题。
  • @JesseGood 哦,感谢那个链接!我在问之前搜索了网络,我不知道我是怎么错过的!

标签: c++ pointers syntax semantics


【解决方案1】:

正如其他人所说,它们是一样的。

int* a, b; 声明一个指针和一个整数这一事实也是以其他方式表现出来的疣的一个方面。例如:

int* a, f(double), c[42];

声明一个指向int 的指针,称为a,一个接受double 并返回一个int 的函数,称为f,以及一个由42 个ints 组成的数组,称为c。这是因为所有这些“装饰”(*()[])构成了称为 declarator 的 C++ 语法的一部分,它与个人名称相关联,而不是与整个语句(在语法中称为声明)。

【讨论】:

    【解决方案2】:

    它具有相同的语义含义。 如果您使用 const 关键字,请注意注意事项:

    int * conts p; - 指向 int 的 const 指针与

    int const * p; - 指向 const int 的非 const 指针。

    【讨论】:

      【解决方案3】:

      它们是一样的。

      这有时很棘手,因为

      int* a, b;
      

      定义一个指针和一个 int。这种风格更清楚:

      int *a, b;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-02
        • 1970-01-01
        • 2014-02-08
        • 2022-01-03
        • 2016-05-14
        • 1970-01-01
        相关资源
        最近更新 更多