const关键字

1、定义常量(const是有类型性的,便于类型检查。少用define)

const int MAX_VAL=23;    //定义了一个整型常量
const double Pi = 3.14;    //定义了一个浮点型常量
const char*SCHOOL_NAME="Peking University";    //char*类型的常量,字符串指针的常量,SCHOOL_NAME就是一个指针常量。2

2、定义常量指针

  • 注意:不可以通过常量指针修改其指向的内容
int n,m;
const int*p=&n;    //p是一个cont int*类型的指针,即常量指针,p指向n
*p=5;    //报错,因为试图通过p修改其指向的内容
n=4;     //ok
p=&m;    //ok,常量指针的指向可以变化
  • 注意:不能把常量指针赋值给非常量指针,反过来可以。
const int*p1;int*p2;
p1=p2;    //ok
p2=p1;    //error。因为我们倾向于常量指针指向的内容尽量不要被修改,如果把他赋值给非常量指针p2,那就可以通过修改p2指向的内容(如*p2=4)来修改p1指向的内容。
p2=(int*)p1;    //ok,强制类型转换,吧p1强制转换成一个int×类型的指针,再赋值给p2。
  • 把函数参数写为常量指针,可避免函数内部不小心改变参数指针所指向地方的内容。
void MyPrintf(const char*p)
{
    strcpy(p,"this");    //编译出错,因为函数strcpy()第一参数的类型是char*,而参数p的类型位const char*类型
    printf("%s",p);    //ok
}

3、定义常引用

不能通过常引用修改其引用的变量

int n;
const int&r=n;
r=5;    //error
n=4;    ok

results matching ""

    No results matching ""