C ++指针符号

时间:2018-08-30 14:55:55

标签: c++ pointers semantics

所以我现在正在学习C ++,我才刚开始接触Pointers,我想我会很好地理解语义,直到我在学习本书的练习的推荐解决方案之一中看到了这一点。 :

const char* sa = * ( static_cast < const char* const* > (a));

我了解类型参数中除const*之外的所有内容。为什么在那儿,它有什么作用?

编辑:纠正了不清楚的表述

1 个答案:

答案 0 :(得分:2)

*表示类型是指向星号左侧类型的指针。

类型中的

const表示const左侧的类型是常量。对于对象,const表示该值不可修改。作为参考,const表示该对象可能无法通过参考进行修改。

char是代表整数编码的窄字符对象的类型。

const char是常量char

const char*是指向const char的指针。

const char* const是指向const的{​​{1}}指针。

const char是指向const char* const*的指针。


请注意,指针是间接的:

const char* const

当指针被间接指向时,结果是指向所指向对象的引用(左值)。如果* ( static_cast < const char* const* > (a)); ^ indirection operator 是间接的,则所得的左值将具有类型const char*。显然,此类左值不能用于初始化对象const char

当间接const char* sa时,结果将是对const char* const*类型的对象的引用(左值)。该值可用于初始化const char* const


一个没有强制转换的简单示例:

const char* sa