const int a;// a是一个int类型的常量
a = 1 //error
const int *p; // p is a point to int const
int const *p; // p is a point to const int
p = &a // √
*p = val // ×
int *const p; // p is a const point to int
p = &a // ×
*p = val // √
进阶
typedef char *pstring;
char *a;
const pstring str; // str是一个pstring类型的常量 => str是一个char *类型的常量
pstring const str;
str = a;// ×
*str = val // √
const pstring *str; // str is a point to pstring const => str is a point to char * const
示例一:
char a;
char *const pa = &a;
str = &pa; // √
*str = pa; // ×
示例二:
char a;
const char *pa = &a;
str = &pa; // warrning:assignment to 'char * const*' from incompatible pointer type 'const char **'
*str = pa; // ×
注:
不能将pstring 代入为char *分析, 如:const pstring str 不等价于 const char *str