C++_Const的相关知识点

1. 修饰函数参数,表示函数不会修改参数

当 const 修饰函数参数时,表示函数内部不会修改该参数的值。这样做可以使代码更加安全,避免在函数内部无意中修改传入的参数值。

尤其是 引用 作为参数时,如果确定不会修改引用,那么一定要使用 const 引用。

void func(const int a) {
    // 编译错误,不能修改 a 的值
    a = 10;
}

2. 修饰函数返回值

当 const 修饰函数参数时,表示函数内部不会修改该参数的值。这样做可以使代码更加安全,避免在函数内部无意中修改传入的参数值。

尤其是 引用 作为参数时,如果确定不会修改引用,那么一定要使用 const 引用。

const int func() {
    int a = 10;
    return a;
}

int main() {
    const int b = func(); // b 的值为 10,不能被修改
    b = 20; // 编译错误,b 是只读变量,不能被修改
    return 0;
}

3. 修饰指针或引用

在 C/C++ 中,const 关键字可以用来修饰指针,用于声明指针本身为只读变量或者指向只读变量的指针。

根据 const 关键字的位置和类型,可以将 const 指针分为以下三种情况:

3.1. 指向只读变量的指针

这种情况下,const 关键字修饰的是指针所指向的变量,而不是指针本身。

因此,指针本身可以被修改(意思是指针可以指向新的变量),但是不能通过指针修改所指向的变量。

const int* p;  // 声明一个指向只读变量的指针,可以指向 int 类型的只读变量
int a = 10;
const int b = 20;
p = &a;  // 合法,指针可以指向普通变量
p = &b;  // 合法,指针可以指向只读变量
*p = 30;  // 非法,无法通过指针修改只读变量的值

在上面的例子中,我们使用 const int* 声明了一个指向只读变量的指针 p。

我们可以将指针指向普通变量或者只读变量,但是无法通过指针修改只读变量的值。

3.2. 只读指针

这种情况下,const 关键字修饰的是指针本身,使得指针本身成为只读变量。

因此,指针本身不能被修改(即指针一旦初始化就不能指向其它变量),但是可以通过指针修改所指向的变量。

int a = 10;
int b = 20;
int* const p = &a;  // 声明一个只读指针,指向 a
*p = 30;  // 合法,可以通过指针修改 a 的值
p = &b;  // 非法,无法修改只读指针的值

在上面的例子中,我们使用 int* const 声明了一个只读指针 p,指向变量 a。我们可以通过指针修改 a 的值,但是无法修改指针的值。

4.3. 只读指针指向只读变量

这种情况下,const 关键字同时修饰了指针本身和指针所指向的变量,使得指针本身和所指向的变量都成为只读变量。

因此,指针本身不能被修改,也不能通过指针修改所指向的变量。

const int a = 10;
const int* const p = &a;  // 声明一个只读指针,指向只读变量 a
*p = 20;  // 非法,无法通过指针修改只读变量的值
p = nullptr;  // 非法,无法修改只读指针的值
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值