参诸文籍, 带你深入理解常量指针, 指针常量, 常指针常量.

参诸文籍, 带你深入理解常(量)指针, 指针常量, 常(量)指针常量的声明.


⭐️本文参考了一些文章, 已置于页脚.🌟
⭐️同时推荐我的另一篇博客《参诸文籍, 带你深入理解C/C++复杂指针声明》🌟
⭐️我的微信公众号:Noah Miller, 希望关注支持一波! 🌟
啊, 啊, 啊~啊里嘎多


1. 引言

干就完了

  • 一般来说, 大家都能理解const应用在变量上可致变量值不可改,但是如果这个变量是指针的话, 究竟是指针的指向不可改还是, 所指地址上的值不可改?
  • 大家有没有被常(量)指针, 指针常量, 常(量)指针常量(后文简称`“三兄弟”)的声明语法迷惑到?

⭐️Motivation | 创作动机🌟: 我发现, 网上很多相关文章都只是讲解了三兄弟的概念和记忆口诀, 我感觉仅仅这样不是很好理解这种声明语法的逻辑.
⭐️Aim | 创作目的🌟:本文旨在通过分享, 我阅读相关文章后对声明语法的理解, 为大家讲清楚这个声明语法究竟是怎么回事?


2. 关于 三兄弟

🌟认真看代码!!!🌟

// 声明一个演示用的变量
int for_demo = 520;

// 1. 常量指针 (两种形式)
// p = &for_demo; -> 可 | *p = for_demo; -> 不可  
const int * p; 
int const * p;

// 指针常量 (一种形式)
// p = &for_demo; -> 不可 | *p = for_demo; -> 可  
int * const p;

// 常指针常量 (两种形式)
// p = &for_demo; -> 不可 | *p = for_demo; -> 不可  
const int * const p;
int const * const p;
  • 常量指针: 指针本身是一个常量, 指向的地址的值是变量, 其指向不可变, 指向的地址上的值可以改.
  • 指正常量: 指针本身是一个变量, 指向的地址的值是常量, 其指向可变, 指向的地址上的值不可变.
  • 常量指针常量: 指针本身是一个常量, 指向的地址的值也是常量, 其指向不可变, 指向的地址上的值不可变.

3. 理解方式

瞅瞅, 这是啥

1) 关于 const

  • const在默认情况下应用在左方最近元素, int * const p这里的const就是应用在了*上.
  • But, 如果const左方没有元素, 就把const应用在右方最近元素, const int * p;这里的const就应用在了int上.

2) *和 type_name 的意义

Note : 为了方便理解, 我们认为在三兄弟的声明语法中, *typename 是具有特殊意义的.

  • * 在这里我们可以理解为指针的指向.
  • type_name 可以理解为指针指向地址上的值.

4. 学费了, 应用一下

总于还是学废了

看完上面的理解方式, 我们可以很容易看出来.

  • const int * p;int const *p;中的const都是应用在了int上, 即, 常量指针.
  • int * const p;中的const应用在了*上, 即指针常量.
  • const int * const p;int const * const p;中, 第一个const应用在了int上, 第二个const应用在了*上, 即常量指针常量

5. 相关资料

6. 求三连!!!

快三连

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值