码迷,mamicode.com
首页 > 编程语言 > 详细

C++构造数据类型----引用

时间:2015-02-24 21:01:32      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:c++   编程   编程语言   

 

       提及引用,我想起了小时候伙伴们互相起外号,同学们的外号有时特别生动形象,每当提及都忍俊不禁。自从给

某人起了一个有特色的外号后,他的名字就被取缔了。 时间长了,只要叫某同学的外号,他便答应了。

      

       知识源于生活,在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++   编程   编程语言   

原文地址:http://blog.csdn.net/wangju2013/article/details/43926745

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!