当前位置:首页 » 《我的小黑屋》 » 正文

【C/C++】常量指针与指针常量的深入解析与区分(什么是const int * 与 int * const ?)

5 人参与  2024年03月19日 19:17  分类 : 《我的小黑屋》  评论

点击全文阅读


目录

一、前言

 二、const 的简单介绍

 三、常量指针

 ?介绍与分析

?小结与记忆口诀

四、指针常量

 ?介绍与分析

 ?小结与记忆口诀

五、总结与提炼 

六、共勉 


一、前言

        在【C/C++】的编程中,指针const关键字的组合常常会引出大部分初学者的困惑(比如我?),特别是学习到C++ 中的拷贝构造那里如果分不清【常量指针】【指针常量】之间的含义与区别的话,是相当的难受。所以本文旨在深入解析这两种声明的含义,帮助大家准确的区分它们。

 二、const 的简单介绍

首先来看看下面这段代码,首先我定义了一个变量num为10,然后又对其进行了一个赋值修改,打印出来之后就是修改之后的值【相信这是最基本的认识】
int main(void){int num = 10;num = 20;printf("num = %d\n", num);return 0;}

但若是我可以修改num值的话,别人也可以修改了,这就没有了安全性。所以我想给它加上一把锁?使得它无法被修改,这里介绍一种C语言中的关键字【const】,若是我们在定义变量的时候在前面加上一个const做修饰,此时这个变量就会变成【常量】
const int num = 10;
可以看到,在加上const常进行修饰之后,这个变量就无法被修改了,若是有人想要去修改的话编译器就会报出警告

知道了const 的含义之后,接下去我们来说说有关【常量指针】和【指针常量】之间的区别

 三、常量指针

 ?介绍与分析

上面看到,因为在定义num的时候前面加上了const常的修饰,就使得它变成了一个常量,无法被修改,在指针初阶章节,我有介绍过可以将一个指针进行解引用去修改这个指针所指向那块地址的值
int* p = #*p = 20;
可以看到,确实可以对其进行一个修改

那此时这个num的安全性就又降低了,所以我想再做制裁?,使得指针也无法对其解引用进行一个修改 那么又需要使用上面所说的const修饰符,也是和修饰num一个道理,只需要在前面加上一个【const】作为修饰即可
const int* p = #
可以看到,此时我们通过指针解引用的方式也无法对其进行修改❌

虽然是不可以通过指针解引用去修改这个指针所指向的值,但是可以去修改这个指针的指向,令其重新指向一个变量的地址,这是合法的
const int num = 10;//num = 20;int num2 = 20;const int* p = #//*p = 20;//errp = &num2;
不过原理还是一样的,我们无法通过这个指针进行解引用去修改它所指向的值

?小结与记忆口诀

以上所描述的就是【常量指针】,一起来总结一下? 

总结:对于常量指针而言,是将【const】放在*的左边,表示的是指针所指向的内容不能通过指针来修改,但指针变量本身可修改 口诀:常量指针所指向的是一个常量,不能修改;但是指针本身不是常量,可以修改

四、指针常量

 知道了什么是【常量指针】,接下去让我们来看看什么是【指针常量】

 ?介绍与分析

刚才我们将const放在*的左边,现在我们换个地方,将它放在*的右边试试
int* const p = #
此时若再去做这两步操作的时候你就会发现和【常量指针】完全不同,可以通过指针解引同去修改指向的值,但是无法再次修改指针的指向
*p = 20;p = &num2;//err

 ?小结与记忆口诀

以上所描述的就是【指针常量】,一起来总结一下? 

 总结:对于指针常量而言,是将【const】放在*的右边,表示的是指针变量本身的指向不能修改,但是指针指向的内容可以通过指针来修改 口诀:指针常量这个指针本身就是一个常量,不能修改;但是指针所指向的内容不是常量,可以修改

五、总结与提炼 

 最后,我们来总结一下本文所学习的内容

 对于【常量指针】而言,是将const放在[*]左边的,指针所指向的内容不能通过指针来修改,但指针变量本身可修改 对于【指针常量】而言,是将const放在[*]右边的,指针变量本身的指向不能修改,但是指针指向的内容可以通过指针来修改

六、共勉 

   以下就是我对常量指针与指针常量的深入解析与区分的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对C++的理解,请持续关注我哦!!!      


点击全文阅读


本文链接:http://zhangshiyu.com/post/81915.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 孟衍凰盛修瑾全本(盛修瑾孟衍凰)全文免费阅读无弹窗大结局_(盛修瑾孟衍凰免费阅读全文大结局)最新章节列表_笔趣阁(盛修瑾孟衍凰)
  • 孟衍凰盛修瑾全本(盛修瑾孟衍凰)全文免费阅读无弹窗大结局_(盛修瑾孟衍凰)孟衍凰盛修瑾全本免费阅读无弹窗最新章节列表_笔趣阁(孟衍凰盛修瑾全本)
  • 抄家前,王妃搬空敌人金库去流放(季清浅江屿白)热门的网络小说_无弹窗全文免费阅读抄家前,王妃搬空敌人金库去流放(季清浅江屿白) -
  • 指挥使张静亿王程小说完结版_完结版小说全文免费阅读指挥使张静亿王程 -
  • 凶猛老太婆(张小英许云飞)完结版小说全文免费阅读_免费小说免费阅读凶猛老太婆张小英许云飞 -
  • (抖音小说)苏慕云谢慎之崔三娘小说全文阅读免费
  • 我会等等你对我心动的那一天精彩小说-我会等等你对我心动的那一天目录阅读
  • 《温诗瑶褚辞远》主角小说温诗瑶褚辞远抖音文免费阅读全文
  • python 几种常见的音频数据读取、保存方式
  • 影后马甲掉光没小说-影后马甲掉光没抖音小说白祈宁晚晚
  • Windows10系统下使用FileZilla传输文件时,出现“状态: 尝试连接“ECONNREFUSED - 连接被服务器拒绝”失败。错误: 无法连接到服务器”错误,完美解决
  • 孟聿川舒渺(缠爱:今生,要定你:舒渺孟聿川)全文免费阅读无弹窗大结局_(孟聿川舒渺)孟聿川舒渺最新章节列表_笔趣阁(孟聿川舒渺)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1