const char **p 、 char *const *p 、 char **const p的区别?
const char *p;他的意思是p指向的目标空间的内容不可变化
char * const p;是表明指针p的值不可变,但它指向目标的值可变
而char **的类型是“指向char类型的指针的指针(poitter to poitter to char)。”
const char **类型不是一个具有限定符的指针类型,它的类型是“指向有const限定符的char类型的指针的指针(poitter to poitter to const char)。”
即:char **和const char **都是没有限定符的指针类型,但他们所指向的类型不一样(前者指向char *,后者指向const char*),因此他们是不相容的。
指向
"字符串常量"
和
指向字符串的"
常量的指针"
前者字符串是常量,
后者指针是常量.
常量就是
"不许修改的量",
所以
前者
"不许修改字符串",
后者是
"不许修改指针"
例如:
const
char*
p
=
"hello";
//
指向
"字符串常量"
p[0]
=
'X';
//
错误!
想要修改字符串的第一个字符.
但是常量不允许修改
p
=
p2;
//
正确!
让p指向另外一个指针.
char*
const
p
=
"hello";
//
指向字符串的"
常量的指针"
p[0]
=
'X';
//
正确!
允许修改字符串,
因为该字符串不是常量
p
=
p2;
//
错误!
指针是常量,
不许修改p的指向
顺便说一句.
char
const
*
和
const
char*
是一样的.
const
的位置在char左边还是右边都一样.
常量指针的const应当写在
*星号的右边.
指向常量字符串的常量指针的写法是
const
char*
const
p
=
"xx";
要2个const
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!