首页 > 解决方案 > 包含 typedef 时,如何用从右到左的规则解释变量声明?

问题描述

当涉及 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 的指针。但是书中的评论指出指针本身是恒定的。我的问题是我的思维方式有什么问题。

标签: c++ctypedef

解决方案


Atypedef不是宏。你不只是文本替换它。

将其读取为cstr“常量pstring”,即“常量(指向字符的指针)”。将此与const char*“指向常量的指针char”进行比较。

如果您要替换 typedef,它将如下所示:

char* const cstr = 0;
char* const* ps;

推荐阅读