当指针遇到const关键字
2013-10-28 21:37 Ross Wang 阅读(440) 评论(0) 编辑 收藏 举报当指针遇到const,绝对不会像北京遇到西雅图那么有趣:
#include<iostream> using namespace std; int main() { char cVar = 'a'; cVar == 'c';//可以 const char ccVar = 'b'; //ccVar = 'd';//不可以,常量字符类型不允许修改-本行无法通过编译 //定义指向char的指针并赋值。 char * pcVar = &cVar; *pcVar = 'e';//可以 char newChar = 'f'; pcVar = &newChar;//可以修改指针指向的相同类型的其他变量 //定义指向char的const指针并赋值。 char * const cpcVar = &cVar; *cpcVar = 'g';//可以 newChar = 'h'; //cpcVar = &newChar;//不可以修改常量指针-本行无法通过编译 //下面两条语句等价,都是定义指向const char的指针并赋值。 const char * pccVar1 = &ccVar; //*pccVar1 = 'i';//不可以,不能通过指针修改字符类型常量-本行无法通过编译 char const * pccVar2 = &ccVar; //*pccVar2 = 'i';//不可以,不能通过指针修改字符类型常量-本行无法通过编译 //下面两条语句等价,都是定义指向const char的const指针并赋值,无论是常量指针本身还是其指向的常量字符都不允许修改。 const char * const cpccVar1 = &cVar; char const * const cpccVar2 = &cVar; /*************************** 以上是简单的指针和const关键字结合使用的情况。 再复杂一点的情况如下所示,已经很难理解了。 ***************************/ //定义指向char的指针的指针并赋值。 char * * ppcVar = &pcVar; //定义指向char的const指针的指针并赋值。 char * const * pcpcVar = &cpcVar; //定义指向char的指针的const指针并赋值。 char * * const cppcVar = &pcVar; //下面两条语句等价,都是定义指向const char的指针的指针并赋值。 const char * * ppccVar1 = &pccVar1; char const * * ppccVar2 = &pccVar1; //下面两条语句等价,都是定义指向const char的指针的const指针并赋值。 const char * * const cppccVar1 = &pccVar1; char const * * const cppccVar2 = &pccVar1; //下面两条语句等价,都是定义指向const char的const指针的指针并赋值。 const char * const * pcpccVar1 = &cpccVar1; char const * const * pcpccVar2 = &cpccVar2; //下面两条语句等价,都是定义指向const char的const指针的const指针并赋值。 const char * const * const cpcpccVar1 = &cpccVar1; char const * const * const cpcpccVar2 = &cpccVar2; return 0; }