Nam*_*rma 0 c++ pointers constants
以下有什么区别:
const char *c = 0; //Here c is a pointer to a constant character
typedef char *pstring;
const pstring cstr = 0 //cstr is a constant pointer to a character
Run Code Online (Sandbox Code Playgroud)
为什么这两个语句有区别,但它们看起来一样。在C++ Primer中提到,第一条语句的基类型是const char,*是声明符的一部分。而对于最后一条语句,基本类型是 const pstring。我没有得到两者之间的区别。
我认为您的困惑源于不了解顶级const. 当你有 时typedef,你不能添加const到基础类型,只能在它上面。
const pstring p与const char *pie 不同,typedefs 不是宏替换。一旦typedefed 类型是原子的;在哪里都没有关系,无论const是在const与完整类型相关联的类型的左侧还是右侧,在这种情况下char*。
typedef char* pstring;
const pstring p1; // const pointer to char i.e. char* const
pstring const p2; // const pointer to char i.e. char* const
Run Code Online (Sandbox Code Playgroud)
如果您按原样书写原始类型,则含义会改变。
const char* p1; // pointer to const char
char* const p2; // const pointer to char
Run Code Online (Sandbox Code Playgroud)
什么是顶级 const 限定符?阅读以了解更多信息。