const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。
const与基本数据类型
const int x = 3, 那x就由一个变量变成了一个常量。
const与指针
可以用两只不同的方式const用于指针:
将指针指向一个常量对象,这样可以防止使用该指针来修改所指向的值。
将指针本身声明为常量。
const int* p = NULL;
int const *p = NULL;
这两种类型的声明完全一致。这种声明const修饰的是*p, 所以不能修改*p的值,
p=&y;//right;
*p = 4;//wrong
special
int * const p = NULL;
int* const p = &x; const修饰的是指针变量,因此p指针指向x,而不能被再次赋值。
const int* const p = NULL; const分别修饰指针变量,和整型变量,因此p=&y;*p=4//这两种都是错误的。
int const* const p = NULL;
上面两种类型的声明也是完全一致的。
const与引用
例子:
int x =3; const int y=&x;//x=10;right//y=20;wrong
因为x这个变量是可变的,而y是不可变的常量。
const int x = 3; int* y = &x; //wrong
int x = 3; const int* y = &x; //right 权限小的变量可以接收权限大的变量