一分钟搞清C++中的指向常量的指针和常量型指针

C++中,指向常量的指针和常量型指针很容易搞混和记错。为了记忆,今天特此记录下来,以便以后查看。

1. 指向常量的指针(point to const):

(1)定义:通常是指向常量的指针,也就是指针指向的内容是个常量。

(2)格式:定义格式例如:const double * ptr 或者double const * ptr形式。样例代码如下:

(3)特点:指针所指内容不可更改,指针地址可以更改

    const double pi1 = 3.14;     //pi1是个常量,它的值不能改变
    const double pi2 = 3.1415;   //pi2是个常量,它的值不能改变
    double* ptr = &pi1;          //错误:ptr作为普通指针,不能被初始化为一个指向常量的指针。
    const double* ptrpi1 = &pi1; //正确:ptrpi1指向了常量pi1
    double const* ptrpi2 = &pi1; //正确:ptrpi2指向了常量pi1
    ptrpi1 = &pi2;               //正确:常量指针的指针地址可以更改
    *ptrpi1 = 3.1415;            //错误:不能修改指针所指内容的值。

2. 常量型指针 (const point):

(1)定义:通常就是指指针本身存放的地址是常量,地址所指的内容未做限定。

(2)格式:例如:double * const ptr

(3)特点:a. 指针本身地址不可更改,指针所指内容可以更改

                    b.  必须定义时初始化,初始化之后,不能修改

    double price = 0.5;
    double* const ptrPrice = &price; //ptrPrice将一直指向price,指针地址不能修改
    *ptrPrice = 0.7;                 //正确:指针的所指的内容可以修改

 3. 如果想定义一个所指内容和指针地址都不能修改的指针变量怎么定义呢?

    const double pi = 3.14;
    const double* const ccpi = π   //ccpi是一个指向了常量内容的常量型指针。

4. 规律与总结

const在不同的位置,代表的意思就不同,很容易搞混,那么有没有有规律的办法来理解和记忆呢?有,这就是从右向左或逆序理解法,就是从指针变量名开始,最靠近变量名的符号影响变量本身的类型,其余部分,确定着变量所指向内容的类型。

例如: 第3个例子中,最靠近ccpi的是const,那么就是说ccpi本身是个常量,紧接着是*,说明,ccpi是个常量型指针,double就是这个指针常量所指内容是double类型,最左边的const就是说指针常量所指内容就是double类型的常量值。

原文链接: https://www.cnblogs.com/markkang/p/13144424.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    一分钟搞清C++中的指向常量的指针和常量型指针

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/356299

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午11:09
下一篇 2023年3月2日 上午11:09

相关推荐