const 修饰的量 叫常量 和普通变量的区别是什么? C++有两点: 1、编译方式不同,用立即数替换 2、不能作为左值被修改 const修饰的量(即常量)常出现的错误是: 1、常量不能再作为左值(即不能直接修改常量的值) 2、不能把常量的地址(&a)泄漏给一个普通的指针(p)或者普通的引用变量(可以间接修改常量的值) const和一级指针的结合:有两种情况: ①不能修改指针的解引用 ②不能修改指针的指向 C++的语言规范:const修饰的是离它最近的类型(有点像飞轮海的《只对你有感觉》,const就只对离它最近的数据类型有感觉) const如果右边没有指针*的话,const是不参与类型的 总结const和指针的类型转换公式: ① int * <= const int * ❌ 因为如果把右边常量赋值给左边的普通变量,那左边一解引用就可以对常量的值进行修改了,这样是不被允许的。 ② const int * <= int * ✅ 普通变量赋到左边常量去倒是没有什么约束的。 ③ int ** <= const int ** ❌ ④ const int ** <= int ** ❌ const和多级指针结合的时候,赋值时必须两边都有const (有空可以思考一下为什么) ⑤ int ** <= int * const* ❌ // 这是**const和一级指针结合**的情况,因为只看const后面的星号*,前面的 * 和 const没关系。两边都去掉 int *,那么就成了 * <= const * ,就跟第一个一样了,所以是错误的。 ⑥ int * const* <= int ** ✅ // 跟⑤类似,去掉int * 看一下就知道了,去掉之后就是②了,所以是正确的。 参考文章:[一级指针&二级指针知识点梳理]( https://blog.csdn.net/qq_53830608/article/details/121674525?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166851536416782425144095%2522%252C%2522scm%2) const和二级指针的结合 ![](https://tva1.sinaimg.cn/large/008vxvgGgy1h86tyqicy8j30kd0a674u.jpg)

原文地址:http://www.cnblogs.com/algorithm-code/p/16905450.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性