c++ 中 常量修饰符const 和与指针的组合情况
1.指向常量的指针:
是指一个指向常量的指针变量。
例如:const char * p = "abcd";
由于使用了const,不允许改变指针所指的常量,因此 p[3] = 'x'; 是错误的;
但由于p是一个指向常量的普通指针变量,不是常指针,因此可以改变p的值,即 p = "aaaa"; 是对的。
2.常指针:
是指指针本身,而不是它指向的对象声明为常量。
例如:char * const p = "abcd";
含义是:声明一个名为p的指针变量,该指针是指向字符型数据的常指针,用字符串abcd的地址初始化该常指针。
创建一个常指针,即创建一个不能移动的固定指针,但它所指的数据可以改变。即 p[3] = 'x'; 是对的,p = "aaaa"; 是错误的。
3.指向常量的常指针:
是指指针本身不能改变,且所指的值也不能变。
例如:const char * const p = "abcd";
含义是:声明一个名为p的指针变量,该指针是指向字符型常量的常指针,用字符串常量abcd的地址初始化该常指针。
即 p[3] = 'x'; 和p = "aaaa"; 均错。