可能重复:
const int*、const int * const、int const *有什么区别?
const int*、const int * const、int const *有什么区别?
Are there any Difference between const char* p and char const* p
Are there any Difference between const char* p and char const* p
const char* p
是指向常量字符的指针。
char const* p
是指向常量字符的指针。
因为const char
和char const
是一样的,所以它们是相同的。
然而,请考虑:
char * const p
是指向(非常量)字符的const
指针。也就是说,您可以更改实际字符,但不能更改指向它的指针。
一些词语的顺序不同。
(直到const相对于星号移动,才会有语义上的差异)
没有区别,因为 '*' 的位置没有变化。
1) const char *p - 指向常量字符的指针 ('p' 不可修改但指针可以修改)
2) char const *p - 也是指向常量字符的指针
然而,如果你有这样的内容:
char * const p - 这个声明了 'p' 是一个常量指针,指向一个字符 (字符 'p' 可以修改但指针不能)
这两种方式没有任何功能上的区别。"更加精确"的方式是char const * p
,因为语义是从右往左的。
没有语义上的区别,但这是一种编码风格和可读性的问题。对于复杂的表达式,从右到左阅读很好:
char const ** const
是一个指向常量字符的指针的常量指针。
因此,char const *
在这方面更加一致。然而,许多人喜欢const char*
因为它更易读——它立即清楚它的含义。