指针常量和常量指针
指针常量和常量指针总是傻傻的记不清楚或者好不容易记住了结果过一段时间又混淆了二者之间的概念接下来帮你理清这两者之间的概念。这两个概念在C/C中经常被混淆但它们之间的含义截然不同核心在于const修饰的是谁。指针常量指针常量又称为(const pointer)const修饰的是pointer。因此指针的指向不能改变指针所指向内存中的值可以被修改。int a 10, b 20; int * const p a; *p 20; //ok,指针指向地址的值可以被修改 p b; //error,指针指向的地址不能改变。常量指针常量指针又被称为(point to const)const修饰的是数据类型如int。因此指针的指向可以改变指针指向的值不能被修改。int a 10, b 20; const int * p a; int const * p a; //二者等价 p b; //ok,指针指向的地址可以改变 *p 20; //error,指针指向地址中的值不能改变。二者叠加上面两者方式叠加我管它们叫做“常量指针常量”(const pointer to const)结合了两者的特点。既不能改变指针的指向 也不能改变指针指向地址中的值。int a 10, b 20; const int * const p a; int const * const p a; //二者等价 *p 20; //error不能改变指针指向地址的值 p b; //error不能改变指针的指向。总结能改变指针指向(p)能改变值(*p)指针常量(const pointer)不能可以常量指针(point to const)可以不能常量指针常量(const pointer to const)不能不能const在‘*’的左边指针指向的地址中的值不能被修改const在’*‘的右边指针的指向不能被修改记忆技巧左定值右定向。