//下面这个代码是无法编译的
typedef char* PSTR;
int mystrcmp(const PSTR, const PSTR)
{
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
char const * p1 ="a";
char const * p2 ="b";
mystrcmp(p1, p2);
return 0;
}
//下面的代码是可以编译的
typedef char* PSTR;
int mystrcmp(const PSTR, const PSTR)
{
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
char * const p1 ="a";
char * const p2 ="b";
mystrcmp(p1, p2);
return 0;
}
const PSTR实际上相当于const char*吗?不是的,它实际上相当于char* const。
原因在于const给予了整个指针本身以常量性,也就是形成了常量指针char* const。
记住,typedef是定义了一种类型的新别名,不同于宏,它不是简单的字符串替换。