指针,常量和类型别名

定义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页

posted @ 2015-06-25 22:49  gazebo  阅读(449)  评论(0编辑  收藏  举报