const的用法
1、定义常变量
const 定义的常变量不能做左值,不能被修改
eg:
int main()
{
int a=10;//a可读可写
int b=a;//a做右值
a=100;//a做左值, 左值:放在“=”符号左边,用写权限
const 定义的常变量不能做左值,不能被修改
eg:
int main()
{
int a=10;//a可读可写
int b=a;//a做右值
a=100;//a做左值, 左值:放在“=”符号左边,用写权限
const int ca =100;//ca为只读变量,不能做左值
ca=200;//错误的
const int cb;//也是错误的
ca=200;//错误的
const int cb;//也是错误的
}
2、数据类型对const是透明的
const int =int const
eg:
2、数据类型对const是透明的
const int =int const
eg:
int const cc=100;// cc与上边的ca没有什么区别
const int*cp=&a;
const int*cp=&a;
cp=&b;//正确
*cp=20;//错误的,原因 const 修饰的指针类型*cp,所以*cp不能做左值
3、const直接修饰的内容,不能做左值
eg:
*cp=20;//错误的,原因 const 修饰的指针类型*cp,所以*cp不能做左值
3、const直接修饰的内容,不能做左值
eg:
int*const cp1=&a;
cp1=&b;//错误
*cp1=20;//正确
(原因是const直接修饰的cp1,所以cp1不能做左值)
int const*const cp2=&a;
cp1=&b;//错误
*cp1=20;//正确
(原因是const直接修饰的cp1,所以cp1不能做左值)
int const*const cp2=&a;
cp2=&b//错误的 const 修饰了cp2,cp2不能做左值,不能被修改
4、权限的传递:同等或缩小传递合法,放大传递非法
eg:
4、权限的传递:同等或缩小传递合法,放大传递非法
eg:
int main()
{
{
int a=10;//可读可写
int b=20;//可读可写
int const ca = 100;//可读
int const cb = 200;//可读
int*p=&a;//*p和&a权限均为可读可写,同等可以赋值
//p=&ca;//错误的,如果赋值ca给p那么p就有可能改变ca的权限
int const*cp1=&a;//a无任何的限制
cp1=&ca;//cp1被const封锁了解引用的权限,ca只可读,可以赋值操作
int b=20;//可读可写
int const ca = 100;//可读
int const cb = 200;//可读
int*p=&a;//*p和&a权限均为可读可写,同等可以赋值
//p=&ca;//错误的,如果赋值ca给p那么p就有可能改变ca的权限
int const*cp1=&a;//a无任何的限制
cp1=&ca;//cp1被const封锁了解引用的权限,ca只可读,可以赋值操作
int *const cp2=&a;
cp2=&ca;//错误,cp2可解引用,ca只可读,不能赋值
int*const cp3=&ca;//错误的,cp3可解引用,ca只可读
}