指针
const int* p; 等价的(int const* p)
这个p是一个指向int类型const对象的指针,const限定了指针p所指向的类型,而并非p本身,也就是说p本身并不是const
int a=0; p = &a; //可以
*p = 20; //不可以
const int b=10;
int* p2 = &b; //不可以
const int* p3 = &b; //可以
不能使用void*指针保存const对象的地址,而要使用const void*
const int a=6;
void* p =&a; //不可以
const cp* =&a; //可以
int* const p;
指针P称为const指针
const int d=30;
const int* const p=&d;(常量要赋初始值)
long* fellow;
*fellow = 223323;
上面的代码中fellow确实是一个指针,但它指向哪里呢?
上述代码没有在将地址赋给fellow.那么223323将放在哪里呢?我们不知道。由于fellow没有被初始化,它可能有任何值。
不管值是什么,程序都将它理解为存储223323的地址,如果fellow的值碰巧为1200,计算机将把数据放在地址1200上,即使这恰巧
是程序代码的地址fellow指向的地方很可能并不是所要存储223323的地方。
警告:一定要在对指针应用解除引用操作符(*)之前,将指针初始化为一个确定的,适当的地址。