在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
所指向的指针不能改变,而且该指针指向的字符数据也不能被改变。