const char * p和char const * p之间的区别
可能重复:
const int *,const int * const,int const *之间的区别是什么?
Are there any Difference between const char* p and char const* p
有些单词的顺序不一样。
(在const相对于恒星移动之前没有语义差异)
const char* p
是一个指向const char
的指针。
char const* p
是一个指向char const
的指针。
由于const char
和char const
是相同的,所以它是相同的。
但是,请考虑:
char * const p
是指向(非const)char的const
指针。 即你可以改变实际的char,但不是指向它的指针。
没有区别,因为’*’的位置没有移动。
1)const char * p – 指向常量字符的指针(’p’不可修改,但指针是)
2)char const * p – 也指向常量Char的指针
但是如果你有类似的东西:
char * const p – 这声明’p’是一个指向char的常量指针。 (Char p是可修改的,但指针不是)
这两者之间没有function差异。 ‘更精确’是char const * p
因为语义是从右到左。
没有语义差异,但这是编码风格和可读性的问题。 对于复杂的表达式,从右到左阅读工作正常:
char const ** const
是const pointer to a pointer to a constant char
的const pointer to a pointer to a constant char
。
因此char const *
在这方面更加一致。 然而,许多人更喜欢使用const char*
来实现其可读性 – 它立即清楚它意味着什么。