C++构造数据类型----引用
来源:互联网 发布:阿里云服务器搭建云免 编辑:程序博客网 时间:2024/05/21 22:37
提及引用,我想起了小时候伙伴们互相起外号,同学们的外号有时特别生动形象,每当提及都忍俊不禁。自从给
某人起了一个有特色的外号后,他的名字就被取缔了。 时间长了,只要叫某同学的外号,他便答应了。
知识源于生活,在C++中也出现了的外号,它没有人的外号那么幽默,但是很雅致,叫做引用。 引用在编程中
很实用,很方便。主要是为了描述函数的参数和返回值,使程序简洁,高效。
一、定义
形式 数据类型 & 引用变量名=变量名
例:世界贸易组织(World Trade Organization)这个词太长了,给它起个外号吧。
char & WTO = 世界贸易组织
从此以后就管 世界贸易组织叫WTO, 但不管怎么称呼,它都是指同一个事物。
注意:
1.定义引用时必须初始化
2.引用名称唯一,不能再定义其他变量的引用
3.只能对已经存在的变量定义引用
二、应用
1.作为函数参数
函数被使用时,我们通常把实参值放入函数参数列表中,发生了一个实参传递给形参的过程。 但引用作为函数
的形参,在函数被使用时,函数中的参数已经是引用变量的值了。 这个与指针作为函数参数比较相似。
2.作为函数返回值
通过一个例子来深刻理解作为返回值
include "stdafx.h"#include "stdlib.h"#include<iostream>using namespace std;int max1(int a[],int n) //求数组a[]中最大值{int t=0;for (int i=0;i<n;i++)if(a[i]>a[t]) t=i;return a[t];}int &max2(int a[],int n ){int t=0;for(int i=0;i<n;i++)if(a[i]>a[t]) t=i;return a[t];}int &sum(int a[],int n){int s=0;// m4将引用s ,看看引用后有什么不对的地方for(int i=0;i<n;i++)s+=a[i];return s; }int main(){int a[10]={1,2,4,5,6,7,8,9,10};int m1=max1(a,10);int m2=max2(a,10); //max2()返回类型是int & ,可以被int型变量接受int &m3=max2(a,10); int &m4=sum(a,10); //m4引用返回变量s, 由于s是函数体内的变量,函数调用结束时,s就无效了 //最后得出的m4是个无效值 ,所以函数返回引用类型变量不能是临时变量。cout<<"m1="<<m1<<endl;cout<<"m2="<<m2<<endl;cout<<"m3="<<m3<<endl;cout<<"m4="<<m4<<endl;system("pause");return 0;}
3.常引用
在声明引用的数据类型前加const修饰,引用就成了常引用。 这样就不能通过常引用更改引用的变量的值了。
三、引用对比指针
共同点
都是间接访问变量
使用前都要初始化
不同点
引用不占新的地址,节省内存
引用不能修改变量的地址,使用起来比较安全
低级编程多用指针,高级编程多用引用
四、小结
引用也是编程语言中一个重要的东西,在简化程序设计的同时,也提高了数据访问的安全性。关于引用,我现在
了解的还不是很深入,到这里先告一段落,相信在以后的编程中经常会与它打交道,再慢慢体会吧。 如有不足之
处,还望斧正。
- C++构造数据类型----引用
- 构造数据类型(C++)
- 【C++】构造数据类型--数组
- c语言构造数据类型
- C语言-构造数据类型
- c语言-数据类型-构造类型
- C语言中构造数据类型的初始化
- C语言第七课 构造数据类型
- C++:右值引用与移动构造
- 引用数据类型
- 引用数据类型
- 引用数据类型
- 数据类型和引用数据类型
- 数据类型,引用数据类型
- C语言构造数据类型之结构体、共用体、枚举
- 【引用】 Cg(c for graphic)语言的数据类型
- 随堂笔记7.29:对象,接口,构造方法,引用数据类型,抽象类,抽象方法-------1
- 关于引用构造函数形参和实际参数的数据类型必须一致的实验案例
- POJ 2388(快速排序)
- LeetCode:Valid Sudoku
- NCover的安装和使用-NUnit
- Eratosthenes筛法和Euler筛法
- 创业公司是如何进行研发管理和绩效考核的?从豌豆荚说开去
- C++构造数据类型----引用
- 64位Windows7使用VS2010编译wxWidgets
- sybase ASA 数据库的表碎片 整理
- 代理模式 - 结构型模式
- 关于组合游戏
- POJ 题目3041 Asteroids(二分图)
- .Net单元测试(二)——XML数据载体的优势与实际应用
- 大数据技术趋势以及未来方向
- 日经社説 20150224 訪日客の多様化に応じた通訳ガイド育め