C语言const关键字

const关键字可以修改变量、指针、函数参数等,被const修饰后意味着告诉编译器某值是保持不变的,不可以被修改(个人感觉可以理解为只读)

一、const修饰普通类型的变量

        

const int  a = 7; 
int  b = a; // 正确,b是一个变量可以被修改
a = 8;       // 错误,aconst修饰不能改变

a 被定义为一个被const修饰的变量,可以将 a 赋值给 b,但是不能给 a 再次赋值(被const修饰后不能修改)。其值不允许修改

PS:

很多人说,变量被const修饰后就成为了常量,其实const并不能把变量变成常量,只是表示这个变量不能被修改,不能被赋值

二、const 修饰指针变量

const修饰指针时,因为指针的结合性,所以有三种情况(PS:这部分其实可以理解为const离谁近,便修饰谁,谁就不可变)

  • A: const 修饰指针指向的内容,则内容为不可变量。
  • B: const 修饰指针,则指针为不可变量。
  • C: const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量。
    const int *p = 8;  //const 修饰指针指向的内容,其内容为不可变量
    
    int a = 8;
    int* const p = &a;
    *p = 9; // 正确  对于 const 指针 p 其指向的内存地址不能够被改变,但其内容可以改变。
    int  b = 7;
    p = &b; // 错误 指针p被const修饰 内存地址不可修改
    
    
    int a = 8;
    const int * const  p = &a;  //const既修饰指针指向的内容,又修饰内存地址,所以指向a后两者皆不可再变

三、const参数传递

const修饰参数传递很简单,就是参数前增加一个const,可以参考一和二两部分(参数无非就是指针和值)

void Cpf(const int a)
{
    cout<<a;
    // ++a;  是错误的,a 不能被改变
}

当然,const也可以修饰函数函数,但是其本质是一样的,函数被修饰之后,其返回值不可变或返回指针内容不可变或返回指针地址不可变,但是万变不离其宗:const修饰谁,谁不可变

PS:

const修饰一级指针时很简单,但是当const修饰二级指针就很有意思了

const char **p  //此时const修饰谁?

都知道,二级指针就是指向指针的指针,所以const修饰的就是**p。其实并不是,const char **p是一个指向const char *指针的指针,也就是说const修饰的是 char *,而p则是指向这个被const修饰的地址的指针

const用的最多的一个地方是修饰函数的参数,对函数的参数进行限定,防止参数内容被函数修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值