3 回答
TA贡献1155条经验 获得超0个赞
char * const a;
指的是指针是常量和不可变的,但指针数据不是。在这种情况下,
您可以使用const_cast(在C ++中)或c样式转换来抛弃常量,因为数据本身不是常量。
const char * a;
表示无法使用指针a写入指向的数据。const_cast在这种情况下使用(C ++)或c样式转换来抛弃常量会导致未定义的行为。
TA贡献1779条经验 获得超6个赞
现在你知道了char * const a和之间的区别const char * a。很多时候,如果它是一个常量指针或指向常量变量的指针,我们会感到困惑。
怎么看?按照以下简单步骤识别上面两个。
让我们看看如何阅读下面的声明
char * const a;
从右到左阅读
现在开始a,
1。毗邻a那里const。
char * (const a);
--->所以a是constant (????)。
2。现在就去吧*
烧焦(* (const a));
--->所以, a是constant pointer到(????)。
3。一起去吧char
(char (* (const a)));
---> a是一个constant pointer以character可变
a is constant pointer to character variable.
阅读不容易吗?
类似于第二次宣言
const char * a;
现在再次开始a,
1。毗邻a那里*
--->所以a是pointer(????)
2。现在有char
---> a是的pointer character,
那没有任何意义!所以洗牌pointer和character
---> a是character pointer的(?????)
3。现在你有了constant
--->所以a是character pointer对constant可变
但是,虽然你可以弄清楚声明的含义,但让它听起来更合理。
a is pointer to constant character variable
- 3 回答
- 0 关注
- 464 浏览
添加回答
举报
