V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
huzhikuizainali
V2EX  ›  C++

指针和 const 结合使用的一个问题

  •  
  •   huzhikuizainali · Oct 17, 2023 · 1457 views
    This topic created in 924 days ago, the information mentioned may be changed or developed.

    引自 c++程序设计语言 p162

    char *const cp; //我的理 cp 是一个指向 char 类型的指针,一旦指定就不可更改,cp 中存储的地址不可更改( const 在此的作用)

    char const* pc;

    const char* pc2; //pc2 是一个指向 char 类型常量的指针,pc2 只能指向常量( const 在此发挥的作用)

    书上对第二行的定义是“指向常量 const 的指针”,这我就不太明白了,const 算是一个关键字吧,怎么会有”常量 const”的概念? const 放在谁前面,就代表谁不可更改。

    书中前一段还说不存在“形如 const *的声明运算符”,所以第二行代码究竟什么意思?

    kobayashilin1
        1
    kobayashilin1  
       Oct 17, 2023
    查看 C++ Primer 5e 相关部分对 const 的讲解,或者看这个视频也行: [ [C++] 一个视频彻底掌握 const] https://www.bilibili.com/video/BV1xY411t75L?vd_source=e0ed7548104f86445a2a6c8dcbe3cfc6
    liberize
        2
    liberize  
       Oct 17, 2023 via Android
    char *const cp; // const pointer 指针本身不能修改
    const char* pc2; // pointer to const 指针指向的内容不能修改
    Kare
        3
    Kare  
       Nov 20, 2023
    C++ Primer 里有个建议,阅读这样的语句时从右往左看,看 const 先修饰谁。
    如楼上举的例子,char * const cp 里面,const 修饰的是这个指针,就是它所指向的地址不能改(地址中存的内容随便改)。
    const char* pc2 里面,const 修饰的是 char ,即指针指向的是一个常量 char ,就不能通过*pc2 修改这个常量 char 的值,但是可以让指针指向别处。
    const char* const pc3 这种,就是指向常量 char 的常量指针,啥都不能改。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5955 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 02:13 · PVG 10:13 · LAX 19:13 · JFK 22:13
    ♥ Do have faith in what you're doing.