《C++ Primer》 3.12
下面是一个几乎所有人刚开始时都会答错的问题,错误在于将typedef 当作宏扩展。
已知下面的typedef
typedef char *cstring;
在以下声明中cstr 的类型是什么
extern const cstring cstr;
第一个回答差不多都是
const char *cstr
即指向const 字符的指针。但是这是不正确的。const 修饰cstr 的类型,cstr 是一个指针。因此这个定义声明了cstr 是一个指向字符的const 指针(见3.5 节关于const 指针类型的讨论)
char *const cstr;
下面是一个几乎所有人刚开始时都会答错的问题,错误在于将typedef 当作宏扩展。
已知下面的typedef
typedef char *cstring;
在以下声明中cstr 的类型是什么
extern const cstring cstr;
第一个回答差不多都是
const char *cstr
即指向const 字符的指针。但是这是不正确的。const 修饰cstr 的类型,cstr 是一个指针。因此这个定义声明了cstr 是一个指向字符的const 指针(见3.5 节关于const 指针类型的讨论)
char *const cstr;
博客围绕《C++ Primer》中的问题展开,指出很多人会错误地将typedef当作宏扩展。以typedef char *cstring为例,分析extern const cstring cstr中cstr的类型,纠正了常见的错误认知,明确其为指向字符的const指针。
982

被折叠的 条评论
为什么被折叠?



