c++ const 指针 理解

本文详细探讨了C++中const关键字在指针前后的应用规则,包括其如何绑定变量,以及如何用于创建const引用和指针。通过具体实例展示了不同组合方式的效果,帮助读者更好地理解C++中指针和const的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1

const 只要放在 类型前或类型后是等价的 如下:
const char*  // both are same
char const*
 

2

const 是绑定左边的变量的,如果左边没有就 绑定右边如下

(const --->> char)*
 (char <<--- const)*


3
int const x; // x is a constant int
const int x; // x is an int which is const

// easy. the rule becomes really useful in the following:
int const * const p; // p is const-pointer to const-int
int const &p;        // p is a reference to const-int
int * const * p;     // p is a pointer to const-pointer to int.
 

### C++ 中 `const` 指针的使用方法和特性 #### 定义与声明 在C++中,可以利用 `const` 关键字修饰指针的不同部分以实现不同效果。具体来说: - 当 `const` 放置在星号左侧时(即形式为 `T const *p` 或者 `const T *p`),表示这是一个指向常量对象的指针,意味着通过该指针无法改变所指向的数据[^1]。 ```cpp const int* ptrToIntConst; // 或写作 int const* ptrToIntConst; ``` 上述代码表明 `ptrToIntConst` 是一个指向整型常量的指针,允许更改指针本身使其指向其他位置,但是不允许经由这个指针修改它所指向的内容。 - 若将 `const` 置于星号右侧,则创建了一个常量指针,这意味着一旦初始化之后就不能再让此指针指向另一个地址[^3]。 ```cpp int b = 20; int a = 10; int* const ptrToConstInt = &a; // 下面这行将会报错,因为尝试重新绑定已固定的指针 // ptrToConstInt = &b; ``` 这里展示了如何定义一个不可变的指针——它可以读取并写入其所指向的对象,但自身不能再被赋予新的内存地址。 #### 双重限定符的应用场景 对于某些情况可能需要同时限制指针及其目标数据都不能发生变化,这时就需要应用双重 `const` 来构建所谓的“完全只读”的指针结构[^4]。 ```cpp const double PI = 3.14159265358979323846; const double* const piPtr = &PI; // 这两个操作都会引发编译期错误: // *piPtr = 3.14; // 不可变更指向值 // piPtr = nullptr; // 不可变更指针本身 ``` 这种类型的指针非常适合用来传递函数参数,在不希望内部逻辑影响外部状态的情况下非常有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值