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 关注
- 386 浏览
添加回答
举报