C语言 const用法详解

1.const介绍

C语言中提供了const关键字,const 中文意思是“恒定的”,从字面意思不难理解,它可以使其修饰的对象变得“恒定”,也就是不能改变。当开发者有意无意地改变被const修饰的对象时,编译器就会报错,使得代码的问题在编译阶段就能被发现,从而提高了开发的效率。

2.const修饰局部变量

int const n = 1;
const int n = 1;

上述两种形式都是正确的,都可以让局部变量n变得不可修改。

3.const修饰指针变量

const修饰局部变量时,变量将变得不可修改。但如果绕过变量,使用局部变量的地址,就可以修改掉局部变量的值,这显然不符合我们的需求,所以想要使变量的值无法通过指针改变时,可以使用const修饰指针变量。它又分为一下几种情况:

int a = 1;
int b = 1;
int c = 1;
//const 在*的左边
int const* p1 = &a;
//const 在*的右边
int* const p2 = &b;
//const 在*的两侧都有
int const* const p3 = &c;
  • const*左边时,不能通过解引用指针变量来修改指针所指向的变量
  • const*右边时,不能改变指针变量内存储的地址
  • const*两侧都有时,既不能通过解引用指针变量来修改所指向的变量,也不能改变指针变量所指向的地址

所以,如果我们想要一个局部变量彻底的无法被修改,需要在定义时使用const修饰变量,同时使用const*左边修饰指向这个变量的指针变量。

4.const 修饰全局变量

const修饰局部变量不同,const修饰全局变量时,既不能直接改变变量的值,也不能通过指针间接改变全局变量的值,这与全局变量在内存中的存储方式和const的底层原理有关。

5.const 修饰字符串常量

字符串常量存储在文字常量区,并且本身就不能修改,但为了防止有意无意的修改,使用const修饰字符串常量,这样在编译阶段就能发现代码的问题。

6.const 修饰函数的形式参数

函数的传参分为两种方式:

  • 值传递:仅仅是传递变量中內容的一份临时拷贝,不会影响到原变量,所以一般情况下不需要使用const修饰。

    例如:

    void test(int x)
    
  • 指针传递:将存有原变量地址的指针变量传递给函数,根据咱们上面const修饰指针变量的情况,同样可以将其分为三种情况:

    1. 修饰指针变量中存储的地址:
    void test(int const* p)
    
    1. 修饰指针变量中指向的内容:
    void test(int* const p)
    
    1. 修饰指针变量中指向的内容和存储的地址:
    vodi test(int const* const p)
    

通过上面的学习,我们发现使用const修饰某一对象时,产生的效果万变不离其宗,就是修饰谁,谁就不能被修改! 认识到这一点,相信大家在使用const时可以游刃有余了~


完。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值