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指向的地址不能更改。

posted @ 2020-08-30 22:22  TyrhpXs  阅读(134)  评论(0编辑  收藏  举报