在C语言中,这三个指针声明具有不同的含义:
const char *p;- p是一个指针,指向一个常量字符。你不能通过- p来修改这个字符的值,但是可以修改- p来指向另一个字符。
char const *p;- 这与 const char *p;完全相同。它同样表示p是一个指向常量字符的指针。字符是常量,不能通过p修改,但是p可以改变指向。
char *const p;- p是一个常量指针,指向一个字符。这意味着指针- p的值不可以更改——也就是说,- p不能指向其他的地址,但它指向的字符数据可以修改。
char *const *p;- p是一个指针,指向一个常量指针,这个常量指针指向一个字符。- p所指的指针(即- p存储的地址)不能更改,但- p本身可以改变并指向另一个- char *const类型的指针。你也可以通过间接的方式(二级指针)来更改字符的值。
char *const *const p;- p是一个常量指针,指向一个常量指针,该常量指针指向一个字符。这里,- p以及- p所指向的指针都不能更改,但- p所指向的指针指向的字符数据可以更改。
const char *const *p;- p是一个指针,指向一个常量指针,该常量指针指向一个常量字符。这里,- p可以改变指向不同的- const char *const类型的指针,但- p所指向的指针以及它所指向的字符数据都不能改变。
const char *const *const p;- p是一个常量指针,指向一个常量指针,该常量指针指向一个常量字符。在这个声明中,- p不能改变指向,- p所指向的指针不能改变,而且该指针指向的字符数据也不能被改变。