c++常量和常量表达式[通俗易懂]

c++常量和常量表达式[通俗易懂]const,默认情况下仅在文件内有效constinti(12);const引用:对常量的引用不能被用作修改它所绑定的对象constintci(5);constint&rci(ci);rci=90;//错误不能修改允许常量引用绑定到非常量的对象、字面值或表达式上inti=20;constint&ri(20);con…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

const,默认情况下仅在文件内有效

const int i(12);

const引用:对常量的引用不能被用作修改它所绑定的对象

const int ci(5);

const int &rci(ci);

rci = 90;//错误 不能修改

 

允许常量引用绑定到非常量的对象、字面值或表达式上

int i = 20;

const int &ri(20);

const int &ri3(i + ri);

 

常量引用仅对引用可参与的操作作出了限定,对于引用的对象本身未做限定

int i(10);

const int &c(i);

i = 90;//i不是常量,可以改变值

c = 20;//错误,c是一个常量引用,const限定了c为常量不能修改,i的修改与c的限定无关。

cout << c << endl;//值为90

 

//指针和const

int iv(10);

int iv1(23);

const int * pci1(&iv);//指向常量的指针,限定了该指针的操作,pci1的值可以改变,pcil指向的值不能变

pci1 = &iv1;

iv = 30;

int * const pci2(&iv);//常量指针,把指针本身定位常量,pci2的值不能改变,pci2指向的值可以改变

*pci2 = 90;

 

cout << *pci1 << endl;//23

cout << *pci2 << endl;//90

 

顶层和底层

顶层:表示指针本身是个常量

底层:指针所指的对象是常量

小技巧:const int * p: const修饰的是*p,也就是*p不能变。

        int * const p: const修饰的是p,也就是p不能变。

 

 

字面值和constexpr

常量表达式:字面值是常量表达式,用常量表达式初始化的const对象也是常量表达式

const int ci = 20;//ci是常量表达式

const int cii = ci + 90;//cii是常量表达式

int iv = 30;//iv不是常量表达式

 

声明为constexpr的变量一定是常量,而且必须用常量表达式初始化

constexpr int cif = 23;

 

constexpr声明的指针,只对指针有效,与指针指向的对象无关

constexpr int cvi(12);//必须定义到函数体外部才能被cip使用

constexpr const int * cip(&cvi);

cout << *cip << endl;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187801.html原文链接:https://javaforall.net

(0)
上一篇 2026年4月18日 下午2:52
下一篇 2026年4月18日 下午2:58


相关推荐

  • 二传感器尺寸「建议收藏」

    二传感器尺寸「建议收藏」说到传感器的尺寸,其实是说感光器件的面积大小,这里就包括了CCD和CMOS。感光器件的面积越大,CCD/CMOS面积越大,捕捉的光子越多,感光性能越好,信噪比越高。下面是家用小DC图像传感器尺寸换算为公制的大小(单位为毫米):2/3英寸的画幅面积为(8.8×6.6mm)1/1.8英寸的画幅面积为(7.178×5.319mm)1/2英寸的画幅面积为(6.4×4.8mm)1/2.7英寸的画幅面…

    2022年6月12日
    50
  • mina框架详解

    mina框架详解From http blog csdn net w article details

    2026年3月17日
    2
  • XSD文件详解

    XSD文件详解原文章 点击打开链接 XSD xmlSchemaDef XmlSchema 的用途 1 nbsp nbsp 定义一个 Xml 文档中都有什么元素 2 nbsp nbsp 定义一个 Xml 文档中都会有什么属性 3 nbsp nbsp 定义某个节点的都有什么样的子节点 可以有多少个子节点 子节点出现的顺序 4 nbsp nbsp 定义元素或者属性的数据类型 5 nbsp nbsp 定义元素或者属性的默认值或者固定值 XmlSche

    2026年3月20日
    2
  • 机器学习模型中的损失函数loss function

    机器学习模型中的损失函数loss functionimportmatplotlib.pyplotaspltimportnumpyasnpxmin,xmax=-4,4xx=np.linspace(xmin,xmax,100)plt.plot([xmin,0,0,xmax],[1,1,0,0],’k-‘,label=”Zero-oneloss”)plt.plot(xx,np.where(x

    2022年7月12日
    20
  • EJB初步学习

    EJB初步学习 今天简单学习了传说中的EJB,首先总的感觉,就是他的最重要的一个特点吧,就是能够使远程用户访问到本地或是服务器上的资源服务器。打个比方吧,传统的,还记得我们的第一个JAVA项目吧,那是个简单的对数据库增删改查的操作,用简单的界面来显示数据。那么当我们把这个项目打包发布之后,事必要把你自己的数据库也贡献出去,你做的软件在进行增删改查时也就只能对你机子上的一个数据库,别人如果想要对你这个数据库进

    2026年4月19日
    6
  • H5+个推实现消息推送服务

    H5+个推实现消息推送服务网上看了几篇教程都是比较老的版本了,根据前人的智慧,然后自己摸索了下,简单几步实现了在手机上推送自定义的消息。首先,在个注册个账号,开发阶段使用个人注册即可,个推注册地址注册完进入配置页面,对应用进行配置,框中的几个地方要特别注意注册时会要求填一个包名,这个就是H5中对应的包名,一定要对应起来,否则收不到推送消息。或者查看应用的标识一定要和下面的标识对应起来,这样才能接收到信息。…

    2022年5月29日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号