//下面这个代码是无法编译的
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是定义了一种类型的新别名,不同于宏,它不是简单的字符串替换。
本文通过两个C++代码示例对比,解释了在使用const关键字修饰指针时的区别,特别是针对const的位置不同所带来的含义变化,即const修饰的是指针所指向的内容还是指针本身。
2190

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



