const常量
来源:互联网 发布:网络借贷利息是多少 编辑:程序博客网 时间:2024/04/20 16:26
2.5.1 常量的定义
变量其实就中是程序在运行过程其值可以改变的内存单元的名字,但是常量就是在程序执行过程中其值固定不变的内存单元的名字,在c++中常用const修饰符定义常量,方法如下:
const 常量类型 常量名=常量值;
说明:
1.const常量必须在定义时初始化,而且一经定义不能在更改(常量名不能出现在=的左边)
2.在c++中,表达式可以出现在常量定义语句中,如果常量是整型,int可以省。
例如:
int j,i,k=9;
const i1=10+k+6;
当常量定义语句中出现表达式时,c++首先计算表达式的值,然后把计算结果在进行赋值;
3.c++中仍然可以使用#define定义常量,但是#define采用宏代换方式进行常量的处理,不具有检查机构,存在不安全性。
2.5.2 const与指针
const可与指针结合,可以分为三种情况
1. typedef *const p const–p:常量指针,即指针是常量,不能被修改,但是其所指的内存区域是变量,可以修改;
2. typedef const *p
const typedef *p const–*p:常量的指针,指针是变量,可以在指向其他内存单元,但是其指的单元是常量,不能在修改;
3. const typedef const *p const-p const-*p:指向常量的常量指针,指针及其所指的内存单元都是常量,都不能被修改。
const对指针和变量之间的相互赋值有一定的影响,const对象的地址只能赋给指向const对象的指针,指向const对象的指针可以被赋予一个非const对象的地址,否则会引起编译错误;
#include <iostream>using namespace std;int main(){ int x=9; const int y=9; int *p1; const int *p2; p1=&y;//错误,若改成p2=&y,则正确,或者把p1改成p2也正确 p2=&x;}
2.5.3 指针与引用
1.在定义引用时,可以用const对其进行修饰,使其成为不被允许修改的常量引用
#include <iostream>using namespace std;int main(){ int i=9; int & rr=i; const int &ir=i; rr=8;//这时也会修改原对象和引用的值 ir=7;//错误,ir是const引用,不能通过他修改对应变量的值}
在定义了const引用时,不可以通过改变对应变量的值,但是可以通过其他非const引用来改变对应的值。
2. const引用可以用常量来初始化,但是非const引用不可以用常量初始化,例如:
#include <iostream>using namespace std;int main(){ int i=2; const double &ff=10.0;//zzheng正确 const int &ir=i+10; int &ir=5;//cuowu错误}
第二三句正确的原因与编译器处理方式有关系,编译器在实现常量引用是生成一个临时对象,然后让这个引用指向这个对象,但是对
用户而言这个对象是不可知的。编译器首先产生不为用户所知的临时变量temp,然后将引用指向它,temp将保持到引用的生命期结束。
- 常量const
- const常量
- 常量(const)
- 常量const
- const 常量
- const常量
- const常量
- const常量
- const常量
- const常量
- const 常量
- const常量
- c++ 常量指针 const*const
- const修饰常量
- const定义的常量
- const修饰常量
- Const常量声明
- const 关键字和常量
- 怕忘记,这是在stormzhang 的微信公众号扣来的,怕忘记,记录在这里
- 给AlertDialog设置外部不可点击
- Java中ArrayList和LinkedList区别
- CC2640R2F之SDK下载安装
- 比较实用的rxJava自动处理服务器错误码
- const常量
- iOS进阶2 -- CocoaAsyncSocket和Websocket框架使用
- Mac下rails new提示Bundler::Plugin::API::Source错误的解决
- (Jenkins)工具使用------android studio Jenkins插件配置
- LeetCode : Longest Palindrome
- Adaptive Geometric Duality(AGD) Prior
- [统计学习方法学习笔记]1.1 统计学习
- 深入研究Block用weakSelf、strongSelf、@weakify、@strongify解决循环引用
- 为modaldialogbox 实现pretranslatemessage