常量指针与指针常量的区别
这个老是容易搞混,以前很清楚,但过一段时间不用,又忘了,因此今天整理成博客,以备以后查询。
const char *类型的指针(指向常量的指针),其所指向的内容为常量,是不可以修改的,但其指针值是可以修改的。
例如 char str[]="hello"; //定义一个字符数组
const char *pStr=str; //把地址赋给指针常量
*pStr='w';// error
pStr=“world”; //right
pStr被定义为指针常量,即它指向的字符串是常量,不可以修改,但pStr本身为指针,表示一个地址值,可以修改指向其他地址。
char* const 类型的指针(常量指针),其地址值是一个常量,不可以修改,但其指向的内存值可以修改。
例如 char str[]="anything"; //定义一个字符数组
char*const pStr=str; //把地址赋给常量指针
*pStr="k"; //right
pStr="null"; //error
pStr被定义为常量指针,即它的值,所指向的内存首地址是不可以修改的,但是其所指向的字符串是可以修改的。
写到这,我又感觉到学好语文多么重要。语文素养高可以帮助我们很多,最直接的是帮助我们理解字面的含义。比如常量指针,和指针常量。首先,常量指针,可以这么理解,常量二字修饰的是指针,即指针(地址)是常量,不可以修改;指针常量,可以这么理解,指针修饰的是常量,即指针所指向的内容不允许修改。
另外,在传递函数形参时,如果我们不想形参修改我们传递的字符串,可以把形参定义为指针常量,即const char *类型。
例如 void fun(const char * pStr){};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库