由于我对常量指针和指针常量的声明格式经常性混淆,今天特别在codeblocks和vs2010上分别试了一下,庆幸的是还好两个编译环境上的结果是一致的。
<1>什么是常量指针和指针常量
常量指针:即为一个指向常量的指针,指针可以修改能够指向其它的对象,指针指向的变量不能修改其值。
指针常量:即为指针是常量,指针不可修改指向其它对象,但是指针指向的对象内容可以修改。
<2>在声明常量指针和指针常量时可能写出的格式有四种
//p指向的数据为常量,即常量指针 *直接修饰p
int const *p = &number;
const int *p = &number;
//p为常量,即指针常量 *直接修饰const
int *const p = &number;
//错误的声明格式
const *int p = &number;
<3>若要声明一个指针和指针指向的数据都是常量,能通过编译的写法有两种
//正确的声明格式
const int *const p = &number;
//错误的声明格式,p是一个常量指针
const int const *p = &number;