-
Const
是常量的意思,被其修饰的变量不可修改 - 如果修饰的是类、结构体,那么其成员变量也不可修改
-
Const
修饰的是其右边的内容
下面通过几个例子,具体了解一下Const
const int *p
int age = 10;
const int *p = &age;
Const
修饰的是右边的内容,得出*p
是常量,p
不是常量,所以直接修改p
指向存储空间的内容是会报错的,也就是*p = 20;
是编译不通过的;但是可以更改p
的指向。
int age = 10;
// *p是常量,p不是常量
const int *p = &age;
// *p = 20; // *p是常量,不能修改,编译不通过
int height = 20;
p = &height;
cout << "age = " << age << endl;
cout << "*p = " << *p << endl;
运行结果:
age = 10
*p = 20
2.int *const p
int age = 10;
// p是常量,*p不是常量
int *const p = &age;
*p = 20;
int height = 40;
// p = &height; // p是常量,编译不通过
cout << "age = " << age << endl;
cout << "*p = " << *p << endl;
运行结果:
age = 20
*p = 20
3.int const *p
int age = 10;
int height = 20;
// *p是常量,p不是常量
int const *p = &age;
cout << "*p = " << *p << endl;
// *p = 20; // *p是常量,编译不通过
p = &height;
cout << "age = " << age << endl;
cout << "*p = " << *p << endl;
运行结果:
*p = 10
age = 10
*p = 20
4.cont int *const p
int age = 10;
int height = 20;
// *p是常量,p是常量
const int *const p = &age;
cout << "*p = " << *p << endl;
// *p = 20; // *p是常量,编译不通过
// p = &height; // p是常量,编译不通过
cout << "age = " << age << endl;
cout << "*p = " << *p << endl;
运行结果:
*p = 10
age = 10
*p = 10
5.int const *const p
int age = 10;
int height = 20;
// *p是常量,p是常量
int const *const p = &age;
cout << "*p = " << *p << endl;
// *p = 20; // *p是常量,编译不通过
// p = &height; // p是常量,编译不通过
cout << "age = " << age << endl;
cout << "*p = " << *p << endl;
运行结果:
*p = 10
age = 10
*p = 10
网友评论