const指针的几种写法
在C++编程中,const指针是一个常见的概念,很多人刚开始接触时容易搞混。其实只要分清楚“指针本身是常量”还是“指针指向的内容是常量”,就容易理解了。
比如你在写一个函数,传入某个数据但不想让它被修改,这时候用const指针就很合适。下面来看几种常见的写法。
1. 指向常量的指针(内容不能改)
这种指针允许改变指向,但不能通过它修改所指向的值。
const int* ptr = &a; // 或者写成 int const* ptr = &a
ptr = &b; // OK:可以换指向
*ptr = 10; // 错误:不能改内容就像你拿着一张只读通行证,可以去不同的房间,但不能改动任何东西。
2. 常量指针(指针本身不能改)
这种指针一旦指向某个地址,就不能再变了,但可以通过它修改内容。
int* const ptr = &a;
ptr = &b; // 错误:不能改指向
*ptr = 10; // OK:可以改内容这就像你被分配了一个固定工位,不能换位置,但可以在上面随意操作电脑。
3. 指向常量的常量指针(内容和指向都不能改)
既不能改指向,也不能通过指针修改内容。
const int* const ptr = &a;
ptr = &b; // 错误
*ptr = 10; // 错误这种最严格,相当于既锁定了位置,又禁止了操作权限。
小技巧:从右往左读更容易理解
比如 const int* const ptr,可以读作“ptr是一个常量指针,指向一个int类型的常量”。这样拆解起来逻辑更清晰。
实际开发中,比如你在处理配置数据、传递参数给函数时,加上const能避免误改,也让代码意图更明确。