如何在包含typedef的情况下解释带有从右到左规则的变量声明?

问题描述 投票:0回答:2

当涉及到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++ c typedef
2个回答
2
投票

一个typedef不是一个宏。你不只是文本替换它。

读它,因为cstr是一个“常量pstring”,这是一个“常量(指向char的指针)”。将此与const char*相比较,char是“指向恒定char* const cstr = 0; char* const* ps; 的指针”。

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

here

1
投票

可以阅读char *

如果使用const类型限定符声明数组类型(通过使用typedef),则数组类型不是const限定的,但其元素类型是

因为pstring是const pstring cstr的typedef,char * const cstrconst char * cstr,而不是qazxswpoi。

© www.soinside.com 2019 - 2024. All rights reserved.