typedef的陷阱
typedef定义了一种类型的新别名,不同于宏,它不是简单的字符串替换。比如:
先定义:
typedef char* PSTR;
然后:
int mystrcmp(const PSTR, const PSTR);
const PSTR实际上相当于const char吗?不是的,它实际上相当于char const。
原因在于const给予了整个指针本身以常量性,也就是形成了常量指针char* const。
简单来说,记住当const和typedef一起出现时,typedef不会是简单的字符串替换就行。
那么const char* 与 char* const有什么区别吗:
答案是:有,而且区别很大。
const char* p;说明p指向的内容为常量字符串,即*p不能更改。
char* const p;说明p是一个常量指针,p指向的地址不能更改。
--------------------------------------------科技源于创新,代码改变世界!--------------------------------------------