1 定义常量
关键字const,用于定义常量。例如:
const int MAX_VALUE = 23;
const double Pi = 3.14;
const char * SCHOOL_NAME = "Peking University";
学了 C++ 之后,应该多用const,少用 define。因为 const 是有类型检查。
2 定义常量指针
const 类型 * 指针名 = & 变量名
例如:
int n, m;
const int * p = & n;
常量指针和普通指针的区别是,不可以通过常量指针来修改其指向变量的内容。
* p = 5; // 编译出错
n = 5; // 没问题
p = &m; // 没问题
不能把常量指针赋值给非常量指针,反过来是可以的。
const int * p1;
int * p2;
p1 = p2; // 没问题
p2 = p1; // 编译报错
p2 = (int *)p1; // 没问题,因为强制类型转换
函数参数为常量指针时,可以避免函数内部不小心修改指针所指向地方的内容。
void my_print(const char * p)
{
strcpy (p, "this"); // 编译出错
printf ("%s", p); // 没问题
}
编译器发现这个错误的原因是,strcpy 第一个参数类型是 char *,不能把一个常量指针赋值给非常量指针。
3 定义常引用
不能通过常引用,修改其引用变量的值
const 类型 & 引用变量名 = 被引用变量名
例如:
int n;
const int & r = n;
r = 5; // 编译出错
n = 4; // 没问题