1.2 const关键字
1、常量 指针常量
定义常量:const 类型 =值
定义指针常量:const *类型=值
- 常量指针不可通过常量指针修改其指向的内容
- 可直接修改其指向的内容
- 常量指针的指向可以变化
- 不可以把常量指针赋值给非常量指针(语法规定:const指针指向的地方p1倾向于该处尽量不要修改,若赋值给非常量p2,则以后可以通过修改p2指向内容修改p1,产生不安全因素)
- 可以把非常量指针赋值给常量指针
- 可以用强制类型转化 把常量指针赋值给非常量指针
e.g.
int n,m;
const *p=&n;
*p=5//illegal 常量指针不可通过常量指针修改其指向的内容
n=4//OK 可直接修改其指向的内容
p=&m;//OK 常量指针的指向可以变化
const int *p1;int *p2;
p1=p2;//OK 可以把非常量指针赋值给常量指针
p2=p1;//illegal 不可以把常量指针赋值给非常量指针
p2=(int *)p1;//OK 强制类型转换 合法
2、实例:函数参数作为常量指针
- 可避免函数内部不小心改变参数指针所指向的内容
e.g.
void f(const char *p)
{
strcpy(p,"this");//illegal strspy传入的第一个参数为char* 型,用const char给其赋值为非法,编译器报错
printf("%s",p);//OK
}
3、常引用
- 不能通过常引用修改其引用的变量
e.g.
int n;
const int &r=n;
r=5;//illegal 不能通过常引用修改其引用的变量
n=4;//OK