学习C语言的时候我们都知道,const修饰词可以防止程序中被const修饰的变量遭到修改,但事实上真的是不能修改吗?我们先来看一段代码:

注意第5行的变量p被const修饰,在第8行对p变量进行了修改,编译一下:

可以看到,编译器输出错误:对只读变量p进行修改。

这说明const确实是可以起到防止程序中对使用了const修饰符修饰了的变量进行修改的作用,尤其是在一些大型程序中,我们常常会忘记哪个变量是什么属性,使用const修饰符可以很好地对程序中的相关变量进行“保护”。可是,变量p真的没有办法修改吗?我们看下一段代码:

程序中,我们增加了第8行,定义了一个int型指针指向变量p,然后在第10行通过对指定地址(此处是p的地址)进行修改的方式对p变量完成了修改。编译一下看看运行结果:

p变量成功的被修改了!那文章开头提到的“const修饰符可以防止程序对使用const修饰了的变量进行修改”的表述有问题吗?

没有问题!C语言当中,使用const修饰符修饰了的变量,确实是不能以左值赋值的方式进行修改,通俗的说,使用const修饰的变量,是不能通过诸如“变量 = 值;”的方式进行修改的,而通过地址方式进行“间接”修改,还是可以起到类似“投机取巧”的效果的。变量存储在内存中,cpu都是“一视同仁”,每一个字节都是可读可写的(对RAM来说)。文章开头描述的“不能修改”并不是从硬件层面进行限制,而是在编译器层面,也就是编译阶段进行检测的。

这下懂了吧?欢迎一起加入讨论,一起进步~~~

const int *p说明不能修改_随时随地学习C语言之6—const修饰的变量真的不能修改吗?...相关推荐

  1. c语言制表符_随时随地学习C语言之1—开发环境搭建

    上一篇文章<C语言常用的集成开发环境有哪些?你用哪个?>介绍了C语言常用的集成开发环境,本文正式开始<随时随地学习C语言系列>连载文章.在这里面,我会把自己学习.使用C语言时的 ...

  2. switch最大选项数目_随时随地学习C语言之3—if和switch哪个效率高?

    之前学习C语言的时候,我经常有一个疑问,既然有if-else if-else结构的多分支选择语句,C语言为何还要制定switch这种多分支选择语句呢?直到两年前在分析ARM平台C语言反汇编代码的时候, ...

  3. 网页游戏mysql修改_大天使之剑奇迹网页游戏 一键服务端+架设教程+修改方法

    大天使之剑奇迹网页游戏 一键服务端+架设教程+修改方法 实施教程: 1.将user的ver和phpStudy文件夹等文件解压到磁盘上给你的目录中.示例:d 3360 \\ muser版本d: \\研究 ...

  4. 用dblink能修改_【学习笔记】通过修改基表(link$)让非public dblink变为public

    天萃荷净 开发DBA反映创建好的Oracle DBLINK由于应用需要,要将其变为public dblink.由于忘记dblink的目标段的密码,使用修改基表(link$)让非public dblin ...

  5. 进制转换c语言代码_奇怪的C语言代码,有些函数在变量前加上(void)是什么类型转换?...

    C语言的语法极其简洁,即使是初次接触编程语言的初学者也能很快学完它的语法.不过,C语言也是一门"灵活得过了头"的编程语言,对于很多初学者来说,编写C语言程序就好像拿着一堆最基本的砖 ...

  6. sql入门经典第5版pdf网盘_如何学习 SQL 语言?

    很多人喜欢一上来就推荐好几本书,但是这些书晦涩难懂,对于初学者入门非常不友好.入门只需要一本书就够了,而不是多本.入门要让初学者看懂才是最重要的,而不是整那些高大上的东西.为了帮助刚毕业找工作,或者想 ...

  7. 函数或变量 rtenslearn_c 无法识别_深度学习的数学-卷积神经网络的结构和变量关系...

    前言 本篇博客主要介绍卷积神经网络的组成部分,以及变量表示,最后附上卷积神经网络代价函数的计算 正文 前文中学到的神经网络都是全连接类型的,隐藏层对输入层有着各自固定的偏好模式,满足偏好模式(权重和偏 ...

  8. vector 赋值_从零开始学习R语言(一)——数据结构之“向量”(Vector)

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/59688569 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125370 ...

  9. const int *,const int * const和int const *有什么区别?

    我总是搞砸了如何正确使用<code>const int* , const int * const和int const * . 是否有一组规则定义您可以做什么和不能做什么? 我想知道在分配, ...

最新文章

  1. Spring Boot(十一)Redis集成从Docker安装到分布式Session共享
  2. Hibernate4继承映射
  3. 大话设计模式(二 代码规范、重构)
  4. 4.UiCollection API 详细介绍
  5. Trend Micro Password Manager 多个高危漏洞
  6. 数学图形(1.49)Nephroid曲线
  7. jQuery源码分析系
  8. 梦断A股:证监会发现了小米的违规之处
  9. masm5 0的使用介绍
  10. layui 表格表头最右侧多一列 解决办法
  11. 第二届全国大学生网络安全精英赛初赛错题笔记
  12. java svg pdf_Java 插入SVG到PDF文档
  13. OEE(设备综合效率)
  14. 快速搭建自己的conda环境---以bioconda为例
  15. Linux 系统下各种包的安装方法
  16. (转)编辑器_编辑器杂谈(转载)+点评
  17. dpi px dip dp sp density 以及公式换算 整理
  18. mysql 面试题 查出每门课程成绩都不低于80分同学的名字
  19. ubuntu 18.04 三五分钟即可一键安装ROS系统(亲测有效)
  20. 在IBM PureApplication System中启用IBM Application Performance Management监视

热门文章

  1. 函数头文件php_PHP 7.4 的 FFI 将支持更好地在 PHP 中使用 C 函数/数据结构
  2. 201触摸ic应用电路_有源电力滤波器的设计原理及应用前景-安科瑞蒋超萍
  3. 在linux下磁盘挂在操作,linux下挂载磁盘操作
  4. 2021-9-30 Python Teaching Note
  5. in、at和on作为方位介词_21
  6. python与matlab比较_python和matlab如何选择?
  7. 【英语学习】【Daily English】U15 Culture L04 When in Rome, do as the Romans Do
  8. Android Studio增加assets目录、raw目录
  9. python 响应代码_Python HTTP响应
  10. python xlutils和openpyxl哪个好_Python-Excel 模块哪家强?