所以我现在正在学习C ++,我才刚开始接触Pointers,我想我会很好地理解语义,直到我在学习本书的练习的推荐解决方案之一中看到了这一点。 :
const char* sa = * ( static_cast < const char* const* > (a));
我了解类型参数中除const*
之外的所有内容。为什么在那儿,它有什么作用?
编辑:纠正了不清楚的表述
答案 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