引自 c++程序设计语言 p162
char *const cp; //我的理 cp 是一个指向 char 类型的指针,一旦指定就不可更改,cp 中存储的地址不可更改( const 在此的作用)
char const* pc;
const char* pc2; //pc2 是一个指向 char 类型常量的指针,pc2 只能指向常量( const 在此发挥的作用)
书上对第二行的定义是“指向常量 const 的指针”,这我就不太明白了,const 算是一个关键字吧,怎么会有”常量 const”的概念? const 放在谁前面,就代表谁不可更改。
书中前一段还说不存在“形如 const *的声明运算符”,所以第二行代码究竟什么意思?
1
kobayashilin1 2023-10-17 18:12:12 +08:00
查看 C++ Primer 5e 相关部分对 const 的讲解,或者看这个视频也行: [ [C++] 一个视频彻底掌握 const] https://www.bilibili.com/video/BV1xY411t75L?vd_source=e0ed7548104f86445a2a6c8dcbe3cfc6
|
2
liberize 2023-10-17 19:02:02 +08:00 via Android
char *const cp; // const pointer 指针本身不能修改
const char* pc2; // pointer to const 指针指向的内容不能修改 |
3
Kare 2023-11-20 14:33:25 +08:00
C++ Primer 里有个建议,阅读这样的语句时从右往左看,看 const 先修饰谁。
如楼上举的例子,char * const cp 里面,const 修饰的是这个指针,就是它所指向的地址不能改(地址中存的内容随便改)。 const char* pc2 里面,const 修饰的是 char ,即指针指向的是一个常量 char ,就不能通过*pc2 修改这个常量 char 的值,但是可以让指针指向别处。 const char* const pc3 这种,就是指向常量 char 的常量指针,啥都不能改。 |