c语言中const的修饰作用

关键字const常常被用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变。但是C语言中不是有#define用来宏定义一些变量吗,c语言中为什么要设计出const呢。其实事实上const的存在一定有它的合理性,与预编译指令相比,const修饰符有以下的优点:

1.预编译指令不能进行类型检查,只是对值进行简单的替换,所以相较于const常量有数据类型,宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误

2.可以保护被修饰的东西,防止程序员编程中的意外修改,从而起到增强程序的健壮性。

3.编译器通常为const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没了存储与读内存的操作,使得它的效率也很高。

4.与宏定义一样可以很方便地进行参数的调整和修改,一改全改。

下面我将从几个方面来说一下const的用法:

一,修饰局部变量

不论const是放在类型名前还是后起到的作用是一致的,都是表示局部变量不能被修改了

tips:const修饰的局部变量一定要进行初始化

二,修饰全局变量

全局变量的作用域是整个文件,我们应该尽量避免使用全局变量,因为一旦有一个函数改变了全局变量的值,它也会影响到其他引用这个变量的函数,导致除了bug后很难发现,如果一定要用全局变量,我们应该尽量的使用const修饰符进行修饰,这样防止不必要的人为修改,使用的方法与局部变量是相同的。

三,常量指针与指针常量

区分常量指针和指针常量的关键就在于星号的位置,我们以星号为分界线,如果const在星号的左边,则为常量指针,如果const在星号的右边则为指针常量。如果我们将星号读作‘指针’,将const读作‘常量’的话,内容正好符合。

常量指针是指 针指向的内容是常量,可以有以下两种定义方式。

常量指针不能通过这个指针改变变量的值,也不能通过该指针修改指向的内容,如下

tips:

1.常量指针说的是不能通过这个指针改变变量的值,

但是还是可以通过其他的引用来改变变量的值的。

2.常量指针指向的值不能改变,

但是这并不是意味着指针本身不能改变,常量指针可以指向其他的地址。

3.指针常量是指 指针本身是个常量,不能在指向其他的地址。

tips:

  1. 指针常量指向的地址不能改变,但是指向地址中保存的数值是可以被其他的指针进行修改的。

指向常量的常指针

是以上两种的结合,指针指向的位置不能改变并且也不能通过这个指针改变变量的值,但是依然可以通过其他的普通指针改变变量的值。

四、修饰函数的返回值

如果给以“指针传递”方式的函数返回值加 const 修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。

如果是用第一种写法接受函数的返回值那么编译器将会报错。

————————————————

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脆皮骷髏人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值