C 语言中 const 关键字在修饰普通类型名和指针时存在较大的区别,容易混淆,解析如下:
(1)修饰普通类型时,可以与类型名交换位置,二者等价。
const int i;
int const i;
(2) 在修饰指针时,不可以互换,因为位置不同,意义不同。
const int *p1;
int const *p2;
以上二者等价,p1, p2 为指针,指向 const int 类型。
int * const p3;
此时,p3 首先是 const , 然后才是指针,最后 指向 int 类型。
(3) 总结:在阅读指针的声明时,可以从左到右阅读,我感觉效很好。