C中各种const声明的区别

yoa*_*str 1 c programming-languages

可能重复: const int*,const int*const和int const*之间有什么区别?

以下有什么区别?

char const *p;
const char  *p;
char *const p;
Run Code Online (Sandbox Code Playgroud)

是否有一个很好的网站,我可以重新学习C和C++?似乎我忘记了,工作面试让我很难受......

Kei*_*las 17

前两个是相同的.

诀窍是,向后阅读....

所以第一个是:

backwards: p * const char
read:      p is a pointer to a const char
meaning:   you can change p to point a at something else, but you can't
           change what it points at

最后一个是:

backwards: p const * char
read:      p is a const pointer to a char
meaning:   p is a pointer which you can't change what it points at, but
           you can change the thing it points to.