const char * p和char const * p之间的区别

时间:2010-06-24 13:23:05

标签: c

  

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

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

5 个答案:

答案 0 :(得分:17)

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

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

由于const charchar const相同,所以它是相同的。

但是,请考虑:

char * const p是指向(非常量)char的const指针。即你可以改变实际的char,但不能改变指向它的指针。

答案 1 :(得分:10)

有些单词的顺序不一样。

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

答案 2 :(得分:4)

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

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

但是如果你有类似的话:
char * const p - 这声明'p'是一个指向char的常量指针。 (Char p是可修改的,但指针不是)

答案 3 :(得分:2)

这两者之间没有功能差异。 “更精确”的一个是char const * p,因为语义是从右到左。

答案 4 :(得分:2)

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

char const ** const

const pointer to a pointer to a constant char

所以char const *在这方面更加一致。然而,许多人更喜欢const char*的可读性 - 它立即清楚它意味着什么。