指针,常量和类型别名
定义typedef char* cptr,cptr和char *在定义数据时的区别,可由下面两个程序得出。
typedef char * cptr;
void main()
{
char a;
const cptr p = 0;
p = &a;
system("pause");
}
上面的程序编译时报错,error C3892: “p”: 不能给常量赋值
void main()
{
char a;
const char * p = 0;
p = &a;
system("pause");
}
这个程序编译成功
通过上面两个程序,我们可以得出:
利用别名定义数据类型时,定义的变量的基本数据类型是该别名的类型,如const cptr p = 0;基本数据类型是cptr,所以P是常量指针。对于const char * p = 0;其基本数据类型是const char,p是指向常量的指针,与const cptr p = 0中p的意义完全不同。
以上知识是在<<C++ Primer>>中看到的,第五版61页