c++ - 包含 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 的指针。但是书中的评论指出指针本身是恒定的。我的问题是我的思维方式有什么问题。
解决方案
Atypedef
不是宏。你不只是文本替换它。
将其读取为cstr
“常量pstring
”,即“常量(指向字符的指针)”。将此与const char*
“指向常量的指针char
”进行比较。
如果您要替换 typedef,它将如下所示:
char* const cstr = 0;
char* const* ps;
推荐阅读
- powershell - 要求确认以 Y 或 N 保存文件。但是它卡在循环中
- c# - Select Multiple Values from a Collection using Lambda Expression
- javascript - 如何将 getElementById 中的 id 号存储在变量中,然后在 onClick 事件中使用它?
- amazon-web-services - 专门为 SES 创建 AWS IAM 用户访问密钥
- mysql - SQL - 如何计算 table1 中的订阅数并连接 table2 中的数据
- android - 用 Chrome 替换 Android Webview 后,Webview 中的 HTML5 视频显示空白预览
- javascript - 使用 CucumberJS / Puppeteer,如何扩展具有多个场景的 Page 对象?
- c# - 如果变量为空,则删除 Word 中的行
- php - 如何从 3 belongsToMany 中获取记录
- r - 如何使用行和列索引的向量从 Dataframe 或 Matrix 中提取特定值?