C++引用与常量
常量:
在C++中有许多种数据类型(如int,float,bool等等)。而这些数据类型又可以声明定义出变量与常量两种不同的具体数据。它们两种分类的标准是不一样的,是两个角度可以叠加的分类,举个栗子:int说明这是个整数,变量x说明这个可变的数(数学中的未知数),两者叠加就是一个整数的未知数(在一个不透明箱子里有多少个球,这个数目是未知的,但是它一定是个整数,不存在半个球)。
对于常量与变量,它们在C++(vs)中的定义方式是不同的。我们声明一个变量只需要写 int x,float y(x,y在数学中也表示未知数)即可。然后对x和y进行赋值,x=10,y=1.000。一般情况下我们声明的都是变量,变量的值在程序中是可以发生改变的,因为是变量嘛。
而常数的声明则需要const关键字或者#define。常数一旦声明就无法改变,如PI就是3.14,不可以对它进行加减乘除运算(这与数学上是一致的,圆周率就是3.14不可更改,这个数据引进到编程语言中就是常量),所以,对D++运算是不允许的,违反逻辑(你在生活中也无法对圆周率进行修改吧)

#define与const的区别:
由上图#define定义时没有数据类型,只是定义一个常数,在进行运算时不会进行相应检查,可能出现错误。 而const后面带有数据类型,实质上还是个float数据,占用数据段空间。
最重要的一点:#define只是一个数据替换,在需要它的时候对数据进行替换
#define N 2+3 //我们预想的N值是5,我们这样使用N
double a = N/2; //我们预想的a的值是2.5,可实际上a的值是3.5
而造成这个问题的原因就是在N/2时,对N进行了一个替换展开,称为2+3,所以最后运算结果为2+3/2=3.5引用:
引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。所谓别名简单理解就是人们的大名与小名一样。
引用的声明方法:类型标识符 &引用名=目标变量名;
int a=10;
int &ra=a; //定义引用ra,它是变量a的引用,即别名。注意:声明引用时,必须同时对其进行初始化。
C++引用与常量的更多相关文章
- C++引用和const引用、常量指针、指针常量
1.引用.常量引用 引用主要被用做函数的形式参数--通常将类对象传递给一个函数. 引用在内部存放的是一个对象的地址,它是该对象的别名.引用不占用内存,因为取地址引用的值和被引用变量的地址相同.但是ob ...
- Mybatis通过GNDL语法引用静态常量或者枚举类型
原因:mybatis 中mapper.xml 文件中需要静态常量的时候 使用: 先定义: public static String aa="aa"; ${@全路径类名称@静态变量| ...
- PostgreSQL中美元符号引用的字符串常量
虽然用于指定字符串常量的标准语法通常都很方便,但是当字符串中包含了很多单引号或反斜线时很难理解它,因为每一个都需要被双写.要在这种情形下允许可读性更好的查询,PostgreSQL提供了另一种被称为“美 ...
- 常量引用 const T&
1.引用本身不是对象,只是引用对象的别名,没有内存空间产生 2.引用必须严格类型匹配 3.而常量引用 const T& 可以引用字面值常量及表达式 其实也就是右值,且常量引用的不同与T类型对象 ...
- 原创 C++之常量(二)
4常量的内存分配 4.1应用程序的内存结构 一个由C++编译的应用程序,占用的内存可以划分为如下几个部分: 栈(stack).由编译器自动分配释放.存放函数参数和函数里的局部变量(又称自动变量).其操 ...
- 1.2 - C#语言习惯 - 用运行时常量readonly而不是编译期常量const
C#中有两种类型的常量:编译期常量和运行时常量.二者有着截然不同的行为,使用不当将会带来性能上或正确性上的问题. 这两个问题最好都不要发生,不过若难以同时避免的话,那么一个略微慢一些但能保证正确的程序 ...
- Auty自动化测试框架第七篇——添加动作库和常量文件库
[本文出自天外归云的博客园] 添加动作库 因为有很多调用的action类如果一直保存在utils中会让utils库不可维护,所以规定utils库中只放和框架本身有关的工具类,和脚本内容相关的工具类都放 ...
- [转载]& 引用 取地址
原文地址:& 引用 取地址作者:beter 引用实际上就是给同一个变量取了多个名字. 举个例子: 有个人的名字叫a,之后又改名叫b,这时a和b都是指这个人,这样b就引用了a,即 ...
- C++ 11 右值引用
C++11中引入的一个非常重要的概念就是右值引用.理解右值引用是学习“移动语义”(move semantics)的基础.而要理解右值引用,就必须先区分左值与右值. 注意:左值右值翻译可能有些问题 *L ...
随机推荐
- Mac OS中的”任务管理器“
在开发使用过程中,经常需要通过任务管理器来查看进程的一些情况以及杀掉一些进程,Mac中也有类似于Windows的”资源管理器“. 启动台->其他 找到”活动监视器“ 活动监视器即是”任务管理器“ ...
- 十、lambda表达式、内置函数之filter、map、reduce
lambda表达式 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: # 普通条件语句 == : name = 'wupeiqi' else: name = 'ale ...
- Alipay支付宝支付 报错 invalid [default store dir]: /tmp/
1.如果使用支付宝sdk,首先lotusphp_runtime 文件也要一起使用 支付宝现在的php sdk中有lotus框架可以和aop文件. 2.保证AopSdk.php文件中的方法可以走到这个 ...
- 使用istioctl命令查看gateway及virtualservices
istioctl命令,比kubectl命令,在查看istio资源方面,要方便很多. 如果使用microk8s安装,则命令为microk8s.istioctl了. 查看gateway及virtualse ...
- js 驼峰命名和下划线互换
代码走你 // 下划线转换驼峰 function toHump(name) { return name.replace(/\_(\w)/g, function(all, letter){ return ...
- actuator beans不展示
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...
- flask实战-个人博客-表单
表单 下面我们来编写所有表单类,personalBlog中主要包含下面这些表单: 登录表单: 文章表单: 评论表单: 博客设置表单: 这里仅介绍登录表单.文章表单.分类表单和评论表单,其他的表单在实现 ...
- 网络编程 TCP协议:三次握手,四次回收,反馈机制 socket套接字通信 粘包问题与解决方法
TCP协议:传输协议,基于端口工作 三次握手,四次挥手 TCP协议建立双向通道. 三次握手, 建连接: 1:客户端向服务端发送建立连接的请求 2:服务端返回收到请求的信息给客户端,并且发送往客户端建立 ...
- 【Js】创建对象的6种方式总结、(底部包含属性名为动态的形式)
一.new 操作符 + Object 创建对象 1 var person = new Object(); 2 person.name = "lisi"; 3 person.age ...
- Jupyter-notebook安装问题及解决
两种方式: 1.pip install jupyter notebook 2.安装Anaconda 1.pip安装 通过命令行pip,要注意是在哪个虚拟环境,安装好后jupyter notebook所 ...