【问题标题】:Difference between const char* p and char const* p [duplicate]const char* p 和 char const* p 之间的区别 [重复]
【发布时间】:2011-03-07 19:42:13
【问题描述】:

可能重复:
what is the difference between const int*, const int * const, int const *

    Are there any Difference between const char* p and char const* p 

【问题讨论】:

  • 骗子在这里:*.com/q/890535/694576 不是它曾经接近的地方,因为后者是关于 C++ 的。

标签: c


【解决方案1】:

const char* p 是指向const char 的指针。

char const* p 是指向char const 的指针。

由于const charchar const 相同,所以相同。

但是,请考虑:

char * const p 是一个 const 指向(非常量)字符的指针。 IE。您可以更改实际的字符,但不能更改指向它的指针。

【讨论】:

    【解决方案2】:

    有些词的顺序不一样。

    (在 const 相对于星形移动之前没有语义差异)

    【讨论】:

    • 我对此的笑声超过了 SO 规则允许我做的事情。
    【解决方案3】:

    没有区别,因为'*'的位置没有移动。

    1) const char *p - 指向常量 char 的指针('p' 不可修改,但指针可修改)
    2) char const *p - 也是指向常量 Char 的指针

    但是,如果你有类似的东西:
    char * const p - 这将 'p' 声明为指向 char 的常量指针。 (字符 p 是可修改的,但指针不是)

    【讨论】:

      【解决方案4】:

      这两者在功能上没有区别。 “更精确”的是char const * p,因为语义是从右到左的。

      【讨论】:

        【解决方案5】:

        没有语义差异,但这是编码风格和可读性的问题。对于复杂的表达式,从右到左阅读效果很好:

        char const ** const

        const pointer to a pointer to a constant char

        所以char const * 在这方面更加一致。然而,许多人更喜欢const char* 的可读性——它的含义很明显。

        【讨论】: