指针和const限定符
1、指向const对象的指针
const double pi = 3.14;
double *ptr = π //error:ptr is a plain pointer
const double *cptr = π //ok:cptr is a pointer to const
不能用void *指针保存const对象的地址,而必须使用const void *类型的指针保存const对象的地址
const int universe = 42;
const void *cpv = &universe; //ok:cpv is const
void *pv = &universe; //error:universe is const
允许把非const对象的地址赋给指向const对象的指针
double dval = 3.14; //dval is a double;its value can be changed
const double *cptr = &dval; //ok:but can't change dval through cptr
尽管dval不是const对象,但任何企图通过指针cptr修改其值的行为都会导致编译时的错误。
2、const指针
3、指向const对象的const指针
4、指针和typedef
typedef string *pstring;
const pstring cstr;
声明const pstring时,const修饰的是pstring的类型,这是一个指针。因此,该声明语句应该是把cstr定义为指向string类型对象的const指针,这个定义等价于string *const cstr; //equivalent to const pstring cstr
用typedef写const类型定义时,const限定符加在类型名前面容易引起对所定义的真正类型的误解:
string s;
typedef string *pstring;
const pstring cstr1 = &s; //written this way the type is obscured
pstring const cstr2 = &s; //all three decreations are the same type
string *const cstr3 = &s; //they're all const pointers to string
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现