-
const char *p;
- 这里,
p
是一个指向常量字符的指针。你可以改变p
指向的地址,但不能改变它所指向的字符。
- 这里,
-
const (char *) p;
- 这是一个无效的语法。C语言不允许在变量声明中使用括号来改变其类型。
-
char *const p;
- 这里,
p
是一个指向字符的指针,其指向的地址是常量,不能改变。但你可以改变它所指向的字符。
- 这里,
-
const char* const p;
p
是一个指向常量字符的指针,其地址本身也是常量,不能改变。
-
char const *p;
- 这与第一个定义相同,即你可以改变
p
指向的地址,但不能改变它所指向的字符。
- 这与第一个定义相同,即你可以改变
-
(char *) const p;
- 这也是一个无效的语法。在变量声明中,你不能使用括号来改变其类型。
-
char const* const p;
- 这与第四个定义相同,即
p
是一个指向常量字符的指针,其地址本身也是常量,不能改变。
- 这与第四个定义相同,即
总结:
可以改变的是:1、3、5(但只限于改变所指向的字符)。
不能改变的是:2、4、6、7(这些定义都包含至少一个常量修饰符)