当涉及到typedef时,我在使用从右到左规则来解释变量声明时遇到了麻烦。
在C ++入门第5版书中,我看到了以下代码:
typedef char *pstring;
const pstring cstr = 0; // cstr is a constant pointer to char
const pstring *ps; // ps is a pointer to a constant pointer to char
如果我用char *替换pstring,那么它就像这样:
const char *cstr
所以我希望cstr是一个指向const char的指针。但是书中的评论指出指针本身是不变的。我的问题是我的思维方式有什么问题。
一个typedef
不是一个宏。你不只是文本替换它。
读它,因为cstr
是一个“常量pstring
”,这是一个“常量(指向char的指针)”。将此与const char*
相比较,char
是“指向恒定char* const cstr = 0;
char* const* ps;
的指针”。
如果要替换typedef,它将如下所示:
here
可以阅读char *
:
如果使用const类型限定符声明数组类型(通过使用typedef),则数组类型不是const限定的,但其元素类型是
因为pstring是const pstring cstr
的typedef,char * const cstr
是const char * cstr
,而不是qazxswpoi。