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 ...
随机推荐
- Shell 编程 函数
本篇主要写一些shell脚本函数的使用. 函数调用 #!/bin/bash sum(){ s=`expr 2 + 3` echo $s } sum [root@localhost ~]# vim su ...
- Python--RE--?
?在re中默认匹配前一个字符0次或者1次 比如: aal? 默认匹配aal,或者aa 即整体匹配前一个字符串,但是可以舍弃最近的一个字符或者不舍弃 re模块 常用正则表达式符号 '.' 默认匹配 ...
- nginx常用伪静态设置
nginx里使用伪静态是直接在nginx.conf 中写规则的,并不需要像apache要开启写模块(mod_rewrite)才能进行伪静态. nginx只需要打开nginx.conf配置文件,在ser ...
- springboot集成spring data ElasticSearch
ES支持SpringBoot使用类似于Spring Data Jpa的方式查询,使得查询更加方便. 1.依赖引入 compile “org.springframework.boot:spring-bo ...
- 使用ARP获取局域网内设备IP和MAC地址
根据Arp列表数据,查询本地设备在线状态 使用 arp -a 获得所有内网地址,首先看Mod对象 public struct MacIpPair { public string HostName; p ...
- nginx 常用的中间件
1.--with-http_stub_status_module nginx客户端状态 # 打开default.conf文件 vim /etc/nginx/conf.d/default.conf # ...
- centos7编译安装pgbouncer
1.下载pgbouncer程序包和libevent依赖包 wget https://github.com/libevent/libevent/releases/download/release-2.1 ...
- #pragma once用法总结
1.#pragmaonce这个宏有什么作用? 为了避免同一个头文件被包含(include)多次,C/C++中有两种宏实现方式:一种是#ifndef方式:另一种是#pragma once方式. 在能够支 ...
- jvm堆、栈、String常量池
原文地址:http://blog.csdn.net/tophawk/article/details/78704074 程序计数器:它的生命周期与线程相同,线程私有.较小的内存区域,用以完成分支.循环. ...
- ansible-playbook实例
准备前提 配置ansible主机详情:https://www.cnblogs.com/security-guard/ nginx的安装 编写nginx的自动部署文件nginx.yml hos ...