const int、const int const 和 int const* 的区别
c++中,指针前面的const关键字总是会导致困惑。本文将对 const int*
、const int* const
和 int const*
之间的区别进行讲解。
首先,我们需要知道,*
是一个“附加符号”,它决定了符号左边的标识符是一个指针而非其他类型的变量。指针可以看做是存储内存地址的变量,而 const
则是“常量”的意思,表示变量的值不可更改。
const int*
const int*
表示指向一个 const int
类型对象的指针。即指针指向的对象不能够被修改,但是指针本身是可以被修改的。
void example1() {
const int data = 0;
const int* ptr = &data;
*ptr = 1; // 编译错误
ptr = nullptr; // 可以修改指针本身
}
const int* const
const int* const
表示一个指向 const int
类型对象的 const
指针。即指针指向的对象和指针本身都不可被修改。
void example2() {
const int data = 0;
const int* const ptr = &data;
*ptr = 1; // 编译错误
ptr = nullptr; // 编译错误
}
int const*
int const*
也表示指向一个 const int
类型对象的指针。但是,和 const int*
不同的是,int const*
中的 const
出现在了类型的前面,这是等效的写法。
void example3() {
const int data = 0;
int const* ptr = &data;
*ptr = 1; //编译错误
ptr = nullptr; //可以修改指针本身
}
总结
以上面三个示例为例,总结一下 const int*
、const int* const
和 int const*
的区别:
const int*
表示指针指向的对象为const int
,可以修改指针本身;const int* const
表示指针指向的对象和指针本身都为const
,不可以修改指针本身;int const*
也表示指针指向的对象为const int
,可以修改指针本身,但是在语法上等价于const int*
。
在实际编码中,可以根据需要选择使用不同的指针类型,以保证程序的正确性和安全性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:const int*、const int * const 和 int const * 的区别 - Python技术站