关于C#:const char * p和char const * p之间的区别


Difference between const char* p and char const* p

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
what is the difference between const int*, const int * const, int const *

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


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

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

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

但是,考虑:

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


有些单词的顺序不一样。

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


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

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

但是,如果您有如下情况:char*const p-这声明'p'是指向char的常量指针。(char p是可修改的,但指针不是)


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

char const ** const

是一个const pointer to a pointer to a constant char

因此,char const *在这方面更加一致。然而,许多人更喜欢const char*,因为它的易读性——很快就会明白它的含义。


这两者之间没有功能上的区别。"更精确"的是char const * p,因为语义是从右向左的。