const的用法:
定义常变量,不允许修改其值(只可读)
eg:int const ca=10;//const修饰ca,ca的值不能改变,为定值。
1.基本的数据类型对于const是透明的;
(1)int const ca=0;//ca和cb是等价的;const修饰ca和cb;
const int cb=0;
const int cb=10;
cb=20//error 不可修改cb的值;
2.const限定它的直接右边
(const修饰的值不能做左值,const修饰的值不能改变所以不能做左值)
const int *p=&a;
cp=100;//error 直接右值不能做左值;
cp=&b;//正确 const修饰的是cp不是cp;
int main()
{
int a = 10;
a = 20;
int b = 20;
int const ca = 10;
//ca = 20;//error
//ca = 10;//error
//int const cb;//error
const int cb = 10;//完全等同ca
//cb = 20;//error
int * p = &a;
const int *cp = &a;
//*cp = 100;//error//直接右边不能做左值
cp = &b;
int *const cp2 = &a;
//cp2 = &b;//error,直接右边不能做左值
*cp2 = 100;
int const *cp3 = &a;//cp3等价cp
cp3 = &b;
//*cp3 = 100;//error
const int *const cp4 = &a;
//cp4 = &b;
//*cp4 = 100;
return 0;
}
3.权限可以缩小或同等传递,但不能放大
int main()
{
int a = 10;
int b = 20;
const int ca = 10;
int *p1 = &a;
//int *p2 = &ca;//error
const int *p3 = &a;
const int *p4 = &ca;
int *const p5 = &a;
//int *const p6 = &ca;//error
return 0;
}
//const,防止在函数中修改源的数据
(src原函数不可修改,des目标函数可修改)