const关键字的用法:
1.定义常量
const int MAX_VAL = 23; //定义整型常量 const double Pi = 3.14; //定义浮点型常量 const char* SCHOOL_NAME = "Peking University"; //字符串指针类型的常量
2.定义常量指针
- 不可通过常量指针修改其指向的内容,注意是不可以通过指针去修改,而不是说内容无法修改,可以通过其他方式修改
int n,m; const int * p = &n; *p = 5; //编译出错 n = 4; //ok p = &m; //ok,常量指针的指向可以变化
- 不能把常量指针赋值给非常量指针,反过来可以
const int *p1;int *p2; //p1是常量指针,p2是非常量指针 p1 = p2; //ok p2 = p1; //error,常量指针倾向于所指的地方不应该随随便便去修改,而把p1赋值给p2之后,我们就可以通过改p2的值对p1所指的内容进行修改,矛盾 p2 = (int *)p1; //ok,强制类型转换
- 函数参数为常量指针时,可避免函数内部不小心改变参数指针所指地方的内容
void MyPrintf(const char* p) { strcpy(p,"this"); //编译出错 , strcpy会改变参数指针所指地方的内容,且strcpy的第一个参数类型是char*,不是 const char* printf("%s",p); //ok }
3.定义常引用,不能通过常引用修改其引用的变量