版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、引用,1,引用的概念,引用就是一个变量或对象的别名。当定义引用时,用一个目标对象的名字对引用作初始化,从而让引用和目标对象建立起联系,对引用的操作就是对目标对象的操作。 这好比是在一个班里,有个学生叫“张小明”,同时他有个绰号叫“小猪”,那么班里的同学都明白,叫“张小明”和叫“小猪”实际上都是指同一个人。引用具有类似的概念。,2,引用的声明,引用的声明需要用到引用运算符“ 在上面的代码里,定义了一个整型变量,然后声明了对变量a的引用ra。注意引用的声明方法是:先写上目标对象的数据类型,然后跟引用运算符“ int b = 20; int /错误,引用在声明后不能指向其他目标对象,5,引用的操作,
2、一旦声明了引用,那么对引用的所有操作实际上都是对其引用的目标对象的操作。 /*【例145】 引用操作举例*/ #include using namespace std; void main() ,6,int a = 10; int *pa = ,7,/定义整型变量a,/定义指向变量a的指针pa,/声明变量a的引用ra,/声明指针pa的引用rpa,/输出变量a的地址,/输出引用ra的地址,/通过引用输出变量a的值,/通过指针输出变量a的值,/通过引用操作变量a,/通过引用输出变量a的值,/通过指针的引用输出 指针pa指向的变量a的值,8,从运行结果可以看出,对引用的操作实际上就是对其引用的目标对
3、象本身的操作,包括取引用的地址,得到的结果都是和其引用的目标对象的地址是一样的。 指针也是变量,所以也可以声明指针的引用,如程序中声明的指针pa的引用rpa,要注意这种声明方法。,void main() int a=10; int 运行结果为: 100 100 20 20,9,解释:声明b是对整数a的引用, 并且使其初始化为变量a的一个别名。一旦b同a的内存对象发生了联系,就不能改变,而且,对b的访问就是对a的访问,对a的访问也就是对b的访问。变量a和引用b共用同一内存空间.,10,说明: (1) 引用运算符与地址符使用的符号相同,尽管它们显然是彼此相关的,但它们却不一样,引用运算符只在声明时
4、使用,它放在类型名后面。 例如:int ,11,(2) 与指针类似,下面三种声明引用的方法都是合法的: int /会误解为声明了两个引用 为了提高可读性,不应在同一行上同时声明引用、指针和变量。,12,引用与指针的区别,通过引用和指针,都可以操作它们所指向的目标对象,但是它们在使用上有很大的差别。这种差别主要体现在: 指针是个变量,可以在程序中改变指针所指向的目标;而引用是一个声明,引用不是值,不占内存空间,在声明引用时必须给它初始化,并且引用在初始化后,不可以再关联其他的目标对象。,13,注意,声明引用时,需要指定引用的数据类型,但是并不是所有的类型都可以被引用。如: (1)不能对void进
5、行引用,例如 void 这样的写法是错误的。这是因为void只是在语法上相当于一个类型,但其本质上并不是一个类型,因为没有任何一个变量或者对象其类型是void的。,14,(2)不能对数组建立引用,例如: int a10; int ,15,指针应用举例,1凯撒密码是最古老的替代密码,以英文26个字母为例,它用D表示a,用E表示b,用F表示c,用C表示z,也就是说密文字母相对明文字母循环左移了3位,因此,又称为循环移位密码。这种映射关系表示为如下函数: F(a)=(a+k) mod n 其中: a表示明文字母,n为字符集中字母个数,k为密钥。在映射表中,明文字母在字母表中的相应位置数为C。 例:,
6、16,假设k=3,对于明文 P=COMPUTERSYSTEMS 则 f(C)=(2+3) mod 26=5=F f(O)=(14+3) mod 26=17=R f(M)=(12+3) mod 26=15=P f(M)=(12+3) mod 26=15=P f(S)=(18+3) mod 26=21=V 所以,密文C=EK (P) =FRPSXWHUVBVWHPV 试编写程序实现凯撒密码的加密过程。,17,/*【例146】凯撒密码*/ #include #include using namespace std; void main() const int MAXLEN = 80; char sourceMAXLEN + 1; int key; cout请输入一个字符串endl; cin.getline(source,MAXLEN,n);,18,coutkey; int len = strlen(source); char *pDest = new charlen + 1; for(int i= 0;ilen;i+) pDesti = A + (sourcei - A + key ) % 26; ,19,pDestlen = 0; cout加密后的字符串:endl; coutpDestendl; for(int i=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 集成电路数字化工厂架构搭建方案
- 摇臂钻安全操作规程
- 电子商务沙盘运营与管理(AI实践版) 实训工单汇 第1-8章 电子商务沙盘结构与流程认知 -第一轮、第二轮经营实战
- 公司督办事项办结单
- 2026年员工修车合同(1篇)
- 2026年眼镜店验光服务协议
- A级膜材料为什么成为软膜天花面光系统的重要组成部分
- 结肠镜检查与慢性肠炎
- 社交媒体数据中的高频词汇提取
- 良法善治申论试题及答案
- 药品信用档案管理制度
- 2025-2030中医院行业市场深度分析及竞争格局与投资价值研究报告
- 企业管理 华为会议接待全流程手册SOP
- 水利工程监理实施细则范本(2025版水利部)
- 有关PLC的毕业论文
- 员工职位申请表(完整版2026年版)
- 矛盾纠纷排查化解课件
- 企业营销策划(数字教材版)课件 第七章 渠道策划
- 勘察阶段工作进度计划安排及措施
- 安全用电培训医院课件
- (标准)转让合同协议书挖机
评论
0/150
提交评论