语句const char *const chPoint;中两个const的用意是什么?

来源:百度知道 编辑:UC知道 时间:2024/05/31 18:58:30

第一个const 是修饰char 的,表示chPoint指针是个常量,也就是说chPoint定于后以后这个指针指是不能修改的。
第二个const是修饰chPoint的,表示chPoint指向的字符串不能通过指针chPoint来修改。
比如
char b[]="abcd";
char a[]="1234";
const char *const chPoint=a;
chPoint=b;//错误,违反第一个const,定于后不能通过指针修改字符串
chPoint[0]='a';//错误,违反第第二个const,前面定于后chPoint不能再赋值。

第二个没什么意思``只是编码规范而已``命名指针名的规范```

定义常量,用const那个变量的只是不能改变的

这个好说,这句话代表它是一个常量数据的常量指针,访问权最低。这样的指针总是指向相同的内存地址,在这个内存地址里的数据不能用指针修改。
若是 char *const chPoint 表示非常量数据的常量指针,这样的指针总是指向相同的内存地址,并且该地址的数据可以通过指针修改。
若是 const char *chPoint 表示常量数据的非常量指针,指针被修改后可以指向任何适当类型的数据项,但是被指向的数据不能通过指针进行修改。
若是 *chPoint 表示非常量数据的非常量指针,具有最高访问权,数据可以通过间接引用指针来修改,并且指针可以修改为指向其他数据。