如果某个类型别名指代的是复合类型,或者常量,那么把它用到声明语句里会产生意想不到的后果。来看以下这个例子:
typedef char * pstring;
const pstring cstr = 0; // cstr是指向char的常量指针
const pstring *ps; //ps是一个指针,其对象是指向char的常量指针
因为const是对给定类型的修饰,因此const pstring意味着指向char的常量指针,而不能将pstring(基本数据类型是一个指针)直接替换成char*(基本数据类型是char,*是声明的一部分),因为这样做的后果是把cstr当成是一个指向常量char的指针