关于const的使用
1、修饰整型变量const int a 就是声明了一种常量表示该变量的内容不可改变
2、对于修饰指针的const就有说法了
const int *a 和int* const a这是两种不同的用法
第一种:
const int *a表示定义了一个指向const变量的指针,但是指针本身不是const类型,也就是说指针本身可以修改但是指向指针的内容不可以修改。
例如:定义一个const变量b,在定义一个const 变量a指向b,然定义一个变量d,然后指针a指向d的地址,这是合法的
解析:
被const修饰的变量b表示这个变量的内容不可改变,也就是说这块内存空间是一个只读区域
而后面定义的指针变量a,这只是一个指向变量b地址的指针,这个指针本身是可以修改的
第二种:
定义一个变量b,然后定义一个int *const a的指针变量a,指向这个变量b,此时这个指针变量a本身是不可以改变的,但是他指向的值是可以改变的
如果这里给a重新赋值编译器就会提示错误:表达式左值必须是一个可以修改的值,但是由于是int* const表示这是一个常量指针所以不能直接修改指针的值,但是可以修改指针指向的内存空间的b中的值。
个人理解:感觉所谓指针就是为了访问内存空间而存在的,而const关键字是用来限制内存空间的访问权限
const int *a是限制了指针指向的内存空间访问权限是只读的不可修改,而int* const是限制了指针变量本身的内存空间访问权限是只读的,应该是这样的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!