const char * const *具体是什么意思

qq_40162781 2021-04-15 05:33:46
大佬们 const char * const *p具体是什么意思?
...全文
1011 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
小卡拉米 2021-04-27
  • 打赏
  • 举报
回复
const 修饰谁, 谁就不可变
源代码大师 2021-04-26
  • 打赏
  • 举报
回复
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html
u18004660201 2021-04-20
  • 打赏
  • 举报
回复
不要写这么复杂的东西,用得很少, 就像汉字有好多生僻字一样。
真相重于对错 2021-04-16
  • 打赏
  • 举报
回复
所谓的二级指针,意思是一个指针(地址编号),那个编号标记的内存里存放的是还是一个地址编号,这个编号指向的内存地址是char 你的例子 就是这个二级指针可以改写,因为第二个const修饰是*,而不是p,所以p是可变的,但是p指向的那个内存中的地址编号不能变。并且由于第一个const的存在,那么p指向的内存里存放的地址指向的内存是一个不能改变的char
真相重于对错 2021-04-16
  • 打赏
  • 举报
回复
引用 5 楼 qq_40162781 的回复:
[quote=引用 3 楼 真相重于对错 的回复:]
少个个指针。。 意思是第一个const修饰的是char *,第二个const 修饰的是*p吗。 然后p的含义就是p指向一个常量指针,指向的指针类型是const char *?[/quote] 把我说的推广一下就知道了
芒果黑 2021-04-16
  • 打赏
  • 举报
回复
引用 7 楼 qq_40162781 的回复:
引用 4 楼 芒果黑 的回复:
首先把const去掉,理解char **p,p是一个指针,是一个指向char *的指针,char *也是一个指针,指向char的指针,即p是指向char的指针的指针,再把const加上,修饰最右边的标识符,p是一个常指针,即p是指向const char的指针的常指针,p本身的值及指向的值都不能修改
p本身的值能变。。
噢噢 看错了 当我什么都没说 哈哈哈
qq_40162781 2021-04-16
  • 打赏
  • 举报
回复
引用 4 楼 芒果黑 的回复:
首先把const去掉,理解char **p,p是一个指针,是一个指向char *的指针,char *也是一个指针,指向char的指针,即p是指向char的指针的指针,再把const加上,修饰最右边的标识符,p是一个常指针,即p是指向const char的指针的常指针,p本身的值及指向的值都不能修改
p本身的值能变。。
真相重于对错 2021-04-16
  • 打赏
  • 举报
回复
所谓的指针变量包括两部分,一部分是地址编号,一部分是这个编号标记的内存。 const char* const p; | | 内存 地址编号。
qq_40162781 2021-04-16
  • 打赏
  • 举报
回复
引用 3 楼 真相重于对错 的回复:
少个个指针。。 意思是第一个const修饰的是char *,第二个const 修饰的是*p吗。 然后p的含义就是p指向一个常量指针,指向的指针类型是const char *?
芒果黑 2021-04-16
  • 打赏
  • 举报
回复
首先把const去掉,理解char **p,p是一个指针,是一个指向char *的指针,char *也是一个指针,指向char的指针,即p是指向char的指针的指针,再把const加上,修饰最右边的标识符,p是一个常指针,即p是指向const char的指针的常指针,p本身的值及指向的值都不能修改
真相重于对错 2021-04-16
  • 打赏
  • 举报
回复
const 修饰他最近的右边的标识符 1、const char* p ;意思就是修饰char 也就是说 const char* p="123" ; p[0]='a',这句话错误,因为p[0]是个const char 但是 你可以再把p指向另外的字符串; const char*p ="123"; p="234"//这句话没错。 2、char * const p;这句话,意思p指向的内存是可变的,但p不能改变 char* s=new char[3]; char* const p = s; char* s1; p = s1;//这句话重新给 p赋值,则出错 p[0]='a';//这句没有问题。 结合上边两步const char* const p 则既不能改变p的指向,也不能改变p指向的内存。
flying_music 2021-04-15
  • 打赏
  • 举报
回复
我告诉你个理解方式,首先把主类型去掉,它在哪儿都不影响结果,也就是变成了 const* const *p 依次把各个const左边的东西删掉,这个里面有两个const,所以两个结果 * const *p *p 再吧其中的const删掉,剩下 **p *p 这两个就是不能被赋值的对象(不能改变的对象),也就是**p=xxx是错的 *p=xxx也是错的 再举个例子:char ***** const ***p;是啥意思: 就是 ***p不能被改写
NorZ 2021-04-15
  • 打赏
  • 举报
回复
一个指向 const char* 的const 指针

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧