const修饰指针(指针闯关2)

本文详细解释了C和C++中const关键字的使用,尤其是在修饰变量和指针时的不同情况,包括常变量、指针指向内容和指针变量本身的可变性。
摘要由CSDN通过智能技术生成

目录

1. 了解 const 

2. const 修饰变量

3. const 修饰指针变量

3.1 const 放在 * 的右边(右定向)

3.2 const 放在 * 的左边(左定值)

3.3 const 放在 * 的两边(定向又定值)


1. 了解 const 

424f1e0aad1a4dd3a32a30aa0dc2396b.png

        const是一个C语言的关键字,它限定一个变量不允许被改变。

2. const 修饰变量

143bb6d12f0d4edbb41f7fd35b7c23f2.png

        上述代码中,变量a 被 const 修饰,在语法上加了限制,只要对 a 进行修改,就不符合语法规则,编译器就会报错。经 const 修饰的 a 具有了常属性,即不能被修改,但其实 a 本质上仍是变量,而不是常量,被称为常变量。

896a7a4b1c9b475da542ebf203e47c6e.png

        创建数组时,必须用常量值来指定数组的大小。上述代码运行时报错就说明被 const 修饰的 a 本质上仍是变量。

注意:以上操作是在C语言的环境下进行的。在C++中,const 修饰的变量就是常量!

        前面提到经 const 修饰的变量是不能修改的,指的是不能直接修改。若非要修改,也不是不可,通过指针的解引用运算即可修改。虽然这么做是在破环语法规则。

576ea9fabb1e4e97aa7f27ad0cf61165.png

3. const 修饰指针变量

3.1 const 放在 * 的右边(右定向)

2c8f6b6ace8e455f97bc7bf59e116d2c.png

        上图中,指针变量p 的值不能由 变量a 的地址修改为 b 的地址。

406909aab94f4f668a771d198320172f.png

        上面两张图说明了如果 const 放在 * 的右边,就不能修改指针本身的内容。

0909d9991db94233942bbe4523c928c6.png

         上图中,变量a 的值由10变成了100。这说明了如果 const 放在 * 的右边,可以通过指针改变指针指向的内容。

const 修饰指针变量的时候,const 如果放在 * 的右边,修饰的是指针变量本⾝,保证了指针变量的内容不能修改,但是指针指向的内容,可以通过指针改变。 

3.2 const 放在 * 的左边(左定值)

5c66d69c9c4f49d49000b5ade4e4ce10.png

        上图中,指针变量p 指向的内容(即变量a 的值)不能由10修改为100。 

380155315c15463cb8851a7487df245a.png

        上面两张图说明了如果 const 放在 * 的左边,就不能通过指针的解引用运算去修改指针指向的内容。

d751442a75d84ed7bb3dc7883fa9d36f.png

        上图中,指针变量p 本身的内容由 a 的地址变成了 b 的地址。这说明了如果 const 放在 * 的左边,指针变量本身的内容可以修改。

const 修饰指针变量的时候,const 如果放在 * 的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变,但是指针变量本身的内容可变。

3.3 const 放在 * 的两边(定向又定值)

f29c5b049deb417a81e75c4640797796.png

        const 修饰指针变量的时候,如果 const 放在 * 的两边,则指针本身的内容和指针指向的内容都不能修改。

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值