const char * char const * char * const 三者的区别
Posted zhiminzeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了const char * char const * char * const 三者的区别相关的知识,希望对你有一定的参考价值。
1、const char * p
p指向的东西,不能通过p来修改,其指向的内容可以通过其他的指针来修改
char str[] = "hello"; const char* p = str; p[0] = ‘s‘; // 错误,不能通过const char* 指针来修改其指向的值 str[0] = ‘s‘; // 正确,其指向的值可以通过其他非const指针来修改 p++; // 正确, 指针可以指向其他值
2、char const * p
等价于 第一种情况 const char * p
3、char * const p (该指针为常量)
定义p的时候必须初始化,表示p 一旦指向了一个东西之后,就不能再指向其他东西,即p是个常量,p只能指向一个固定的地址。不允许有p++操作了
但是可以通过*p 来修改它所指向的内容
char str[] = "hello"; const char* p = str; p[0] = ‘s‘; // 正确,可以修改其指向的值 p++; // 错误, 指针是const,一旦初始化,则不可以再指向其他内容
4、const char * const p
p 指向的地址不能被改变,而且p指向的东西也不能被改变
小结:
const 放在p前面,表示的是p 所代表的内容不能通过p来修改,但是可以通过其他变量来修改
const 放在* 后 p 前面,表示指针p 的值不能被改变,即p 所指向的内存地址不能被改变
以上是关于const char * char const * char * const 三者的区别的主要内容,如果未能解决你的问题,请参考以下文章
深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**cons(示例
const char **,char *const *,char ** const
const char * char const * char * const 三者的区别
const char *p; char const *p; char * const p的区别