关于const 关键字用于指针的定义,萌新们是怎么理解的呢?

关于const 关键字用于指针的定义,萌新们是怎么理解的呢?

哈喽!大家好,我是你们的好朋友童无敌!
话不多说,咱们进入正题!
我发现许多萌新对用const关键字定义指针的理解,多少都有些许的偏差,今天我在这里帮助萌新总结一下,让萌新跟着无敌不迷路!
首先,用const关键字去定义普通的变量是很好理解的,
例如 ,const int a=1;这个语句的意思仅仅是:定义的整型变量 a 是只能在定义的时候被初始化的,在其他地方是不能做左值,也即不能通过这个变量名去修改这个内存空间里的内容的。但是呢,我们如果非要去修改这个内存空间里的值怎么办呢?这时,我们可以通过一个指向这个内存空间的指针,然后解引用去修改这个内存空间的值!(是不是感觉用了有点龌龊的手段呢?嘻嘻)
接下来对于指针,先看几个定义例子,① const int *p; ② int const *p; ③ int *const p; 好了!请仔细观察… … 观察出这三个定义例子有什么不一样的吗?经过仔细的观察你会发现①和②的星 ( * ) 是靠近变量 p 的而 ③ 是 const 关键字靠近变量 p 的。这有什么不同呢?
其实很简单,也即①和② 也即 星 靠近 p 的这两个定义,意思仅仅是说 p 这个指针变量指向的内存空间的内容是不能通过 p 也即它本身去解引用修改的,懂了吗?也就是说如果我们非要修改 p 这个指针变量所指的内存空间内容的话,我们可以用其他的方式去修改。例如换为 ③ 这种指针的定义形式。所以并不是说 p 所指的这个内存空间的内容不能修改,而是 p 所指的这个内存空间的内容是不能通过 p 去进行解引用修改的!而 ③ 的这种定义形式是说 p 这个指针变量的内容是不能通过 p 做左值,也即不能通过 p 去修改的。如果我们非要修改 p 的内容的话我们可以通过 p 的地址去修改它,也即让一个指向指针的并且定义时不带 const 关键字或 const 关键字靠近这个指向指针的指针的指针 ,去指向 p 然后通过解引用去修改它!现在明白了吗? 嘻嘻… …
到这里呢我们可以总结一下啦!也即 const 靠近谁,则我们仅仅不能通过它去修改这个内存空间的内容,但是这个内存空间的内容是可以通过指向它的并且定义时不带 const 关键字或者 const 关键字靠近这个指针的指针,通过解引用去修改的。对于指针如果是 星 靠近指针变量而不是 const 关键字,则说明这个指针变量所指的内存空间的内容仅仅是不能通过这个指针变量去修改的,如果我们非要去修改这个内存空间的内容的话,我们可以用其他的指向它的并且定义时不带 const 关键字或 const 关键字靠近这个指针的指针通过解引用去修改这个内存空间的内容!
好啦!小伙伴们,今天我们谈了谈关于const 关键字用于指针的定义时的一些细节,你们都懂了吗?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值