0
点赞
收藏
分享

微信扫一扫

const修饰变量

回溯 2022-04-14 阅读 100
c语言

前言

首先我们要知道const是constant的缩写(意思是:恒定不变的),那么const作为C语言的关键字去修饰一个东西所表示的意思就很好猜测了,基本可以确定:被const修饰的东西都拥有了恒定不变的属性,这是我们可以确定的。
在这里插入图片描述


const修饰变量

一般而言,const是用来修饰变量的(像:int型变量,char型变量,float型变量,指针型变量等等)所有种类的变量它都可以修饰,只不过对于指针变量的修饰略微有些不一样罢了。另外,const修饰的东西都能受到强制保护,所以const可以用作预防意外的变动提高程序的健壮性

  • const修饰内置类型变量
    从下面这个案例我们可以知道,当int型变量a被const修饰的时候,再给他重新赋值,编译器将报错:左值指定const对象。(意思是不能再通过用a这个变量名来找到其对应的存储空间内的方法,去改变里面的数据,从而达到从新赋值)。上面这句似乎话里有话,不知道你听出来没,容我买个关子,哈哈,下面const修饰指针会讲到。
    在这里插入图片描述
    在这里插入图片描述

  • const的常属性
    还值得注意的是:const只是赋予变量常属性,本质上其还是变量,并没有变成常量,只是拥有了常量不可变的性质。举个例子就知道了:
    在这里插入图片描述
    在这里插入图片描述
    我们都知道在创建数组的时候,数组[ ]内必须是常量表达式,而[ ]内放的是const修饰的变量时,编译器报错:应输入常量表达式。从这就可以知道,const修饰的变量a本质上仍然是变量。

  • const修饰指针变量
    • 话里有话何解?卖个关子,嘻嘻
      前面讲到被const修饰的变量,就不能再通过给变量名赋值的方法去改变它的内容了;但其实还有另一种方法可以直接无视const的限制改变其内容,该方法就是:通过指针去访问变量的存储空间,从而改变里面的内容
      在这里插入图片描述
      在这里插入图片描述
      那么既然被const修饰的变量仍可以通过指针去改变,那这不就出现歧义了嘛?(我使用const的目的就是为了不让它被改变,但搞了半天还是可以被指针改变,这有违设计const的初衷啊),所以为了不让指针可以改变其内容,那就用const来修饰一下指针吧!!!

    • const放在左边
      const放在指针变量的*的左边时,例如:const char* p = &num,修饰的是*p。也就是说,我们无法通过对指针p的解引用来改变num中的值了。
      在这里插入图片描述
      在这里插入图片描述

    • const放在右边
      const放在指针变量的*的右边时,例如:char* const p = &num,修饰的是p。也就是说指针p所指向对象无法更改了,只能指向num。
      在这里插入图片描述
      在这里插入图片描述

    • const两边都有
      const在指针变量的*的两边都有时时,例如:const char* const p = &num,这样既修饰的是*p也修饰了p。也就是说指针p既不能改变其所指向对象,也不能通过解引用的方法来改变内容。

如果这份博客对铁们有所帮助,或能够使你产生共鸣的,请不要吝啬你的点赞关注哟,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧 >_<…

举报

相关推荐

0 条评论