总规则:条件只能越来越严格,不能越来越轻松。
1、普通指针可以赋值给const指针,反之错误
const int *p1; int *p2;
p1=p2;//正确
p2=p1;//错误
p2=(char *)p1;//强转可以
2、普通指针可以给常指针初始化,但是常指针不能给普通指针初始化(或赋值)
int *p1=(int *)malloc(sizeof(int));
int * const p2=p1;//正确
int *p3=p2;//错误
3、把const数据或非const数据的地址可以初始化指向const的指针或为其赋值,反之即将const数据初始化货赋值给普通指针是非法的。
int rates[4]={1,2,3,4};
const int locked[4]={5,6,7,8};
cosnt int *p1=rates;//正确
p1=locked;//正确
p1=&rates[2];//正确
int *p2=&locked[1];//错误