1. const 关键字 4 种常见的类型
1.1 不能通过指针变量修改其指向的值。
const int *pa = NULL;
int const *pa = NULL; // 这两种写法定义的指针变量的类型是一样的。
int age = 25
int *pa = &age;
*pa = 30; /* 编译错误,在 const int * 类型下, 不能通过指向 age 的指针来修改 age 的值 */
age = 30; /* 正确,可以直接对变量进行操作 */
1.2 不能修改指针变量本身的值。
int * const pb = NULL;
int age = 25
int age_man = 30;
int *pb = &age; /* 1. 第一次初始化可以 */
*pb = 30; /* 正确,可以通过指针变量修改其指向的值 */
age = 30; /* 正确,可以直接对变量进行操作 */
pb = &age_man; /*2. 第二次不能修改指针变量本身的值 */
1.3 既不能修改指针变量本身的值,也不能通过指针变量修改其指向的值。
const int * const pc = NULL;
1.4 C++ 中的用法
在类的成员函数中 getXxxx() 之类的方法加 const 关键字进行修饰。譬如: int getAge() const
class Person
{
private:
char *m_name;
int m_age;
public:
void printInfo(void)
{
printf("m_name=%s, m_age=%d\n", m_name, m_age);
}
int getAge() const
{
return m_age;
}
int setAge(int age)
{
if (age < 0 || age > 150)
{
this->m_age = 0;
return -1;
}
this->m_age = age;
}
};
2. Why(为什么使用 const 关键字)
- 提高程序的可读性:const 修饰的变量一般只是作为入参(左值),一般只是对该变量进行读操作。
- 提高程序的可靠性: 可以把运行时的错误提前到编译的时候。