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.定义常引用,不能通过常引用修改其引用的变量