• 理解C语言中指针常量和常量指针区别!不要再搞混了~


    在学习C/C++的时候总是记不住指针常量 (int * const p;) 和常量指针 (const int *p) 的区别,最近再刷题的时候发现了一个评论,分分钟就可以记住这两者的形式和区别,下面分享一下如何记住和区分指针常量和常量指针。


     

    指针常量

    我们通常称之为指针常量的东西就是如下的这种形式:

    int * const p;

    首先说一下指针常量中const的作用是限制指针不可变,也就是说指针一旦初始化不可再更改,但是其指向对象的值是可变的,看下面的例子:

    int a=10,b=20;

    int* const p = &a;

    *p = 15; //允许修改值

    cout<<*p;

    p = &b; //报错,read-only variable 'p'

    常量指针


     

    常量指针其实又两种书写形式,如下:

    const int *p;

    int const* p;

    上面的两种书写形式是等价的,常量指针中const的作用和指针常量中互补,其限制的是常量不可变,也就是说指针初始化后可以修改其指向,但是无法修改对象的值,看下面的例子:

    int a=10,b=20;

    const int *p = &a;

    p = &b; //允许修改指向

    *p = 15; //报错,不允许修改值

    指针常量:

    int * const p;

    观察一下其形式,发现*号在左,const在右,我们从左往右读,“*”号读作“指针”,“const”读作“常量”,所以总的读作:“指针常量”。

    常量指针:

    const int *p;

    int const* p;

    观察发现,常量指针中const 总是位于*号左侧,所以我们按照上面的方法依次从左往右读,合并起来就是“常量指针”。

    我们只要记住const总是修饰左边就可以了,但是有一种特殊的情况就是const位于最左侧,此时const将修饰右边,看下面的例子:


     

    指针常量:

    int * const p;

    我们发现const的左侧是*号,我们就把*号读作指针,所以const限制的是指针。

    常量指针:

    const int *p;

    const位于最左侧,所以修饰const的右边int所以修饰的是值不可变。

    int const* p;

    const左侧为int,所以和上面一样,值是不可变的。

    读的时候,从左往右遇到“*”读指针,遇到“const”读常量。

    判断限制域的时候,const总是修饰其左侧标识符,如果const位于最左侧则修饰其右侧标识符。

    ————————————

    今日份C语言知识分享就到此结束啦~

    最后,小编分享一个C语言编程学习基地←点击进入,欢迎到访~

    涉及:C语言、C++、windows编程、网络编程、QT图形界面开发、Linux编程、游戏编程、数据结构与算以及数据库......


     
  • 相关阅读:
    Python 的 Socket 编程教程
    java中的io系统总结
    java FileFilter的使用
    Java System 类详解 in, out, err
    电子邮件和短信将令情书绝迹
    一些有趣的编程名言
    10个经典的Android开源应用项目 android入门
    从装饰者设计模式学习Java IO
    python 求N以内的所有的质数
    java中length,length(),size()区别
  • 原文地址:https://www.cnblogs.com/huya-edu/p/14143701.html
Copyright © 2020-2023  润新知