C++之引用

       真是用多了就知道一个东西的好处,跟指针比起来,C++引入的引用非常的方便,这一篇就来说一说引用。

       简单的说,引用就是某个变量或对象的别名。建立引用时,要用某个变量名或对象名对它进行初始化。于是它便绑定在该变量或对象上。引用只作为某个变量或对象的别名来使用,对引用的改动就是对用来对它初始化的变量或对象的改动。引用不是变量或对象,它不占内存空间。引用只是替代某个变量或对象的别名。引用有值,它的值是被引用的变量的值,引用有类型,它的类型就是被引用的变量的类型。

       建立引用的格式:<类型说明符>  &  <引用名>  =  <变量名或对象名>  符号&是说明符,它用在引用名前。它与运算符&不同,运算符&表示取地址值,作用在变量名前。符号&有三种使用方法:  int&  ra=a;    int   &ra=a;   int  &  ra=a;  这三种都是等价的。

       引用作为函数参数

       引用作为函数参数可以达到指针作为函数参数的相同的目的:传递参数不拷贝副本,在被调用函数中改变调用函数参数值。但是,引用作为函数参数时,调用函数的可读性好。因为引用作为函数形参时,调用函数的实参用变量名或对象名,与一般传值调用相同。而指针作为函数形参时,调用函数的实参用地址值。 

            编程写入一个数输出这个数的数值,平方根和平方

<span style="font-size:18px;">#include <iostream>
#include <Cmath>//标准C++中数学函数库
using namespace std;
int fun(int,double &,double &);//函数的说明,其中两个形参是引用
int main()
{
	int x,test;
	cout<<"Enter a number(0--100): ";
	cin>>x;
	double square_root,square;
	test=fun(x,square_root,square);//函数的调用,调用函数的实参用变量名
	if(test)
		cout<<"Enter error!\n";
	else
	{
		cout<<"number="<<x<<endl;
		cout<<"square_root="<<square_root<<endl;
		cout<<"square="<<square<<endl;
	}
	return 0;
}
int fun(int x,double &rsquare_root,double &rsquare)//函数的定义,其中的两个形参是引用
{
	if(x>100||x<0)
		return 1;
	rsquare_root=sqrt(x);
	rsquare=x*x;
	return 0;
}</span>

           引用作为函数参数的返回值

       一般函数返回值时都要建立临时变量,即用来拷贝副本。具体的实现是:先将返回表达式的值传递给临时变量,返回到主函数后,再将临时变量的值传递给接受函数返回值的变量。但是,返回引用时,并不产生副本,而是将其返回值直接传递给接收函数返回值的变量或对象。

       编程求出一个数的平方

<span style="font-size:18px;">#include <iostream>
using namespace std;
int &square(int);//定义的一个返回引用的函数
int main()
{
	int s1=square(15);//直接将其值传递给接受函数返回值的变量的调用函数
	int s2=square(28);
	cout<<"s1="<<s1<<"s2="<<s2<<endl;
	return 0;
}
int t;//定义的外部变量
int &square(int i)
{
	t=i*i;
	return t;
}  </span>

           再来看一个综合的程序题:

#include <iostream>
using namespace std;
int& fun(const int &);//函数的说明,返回引用和形参是常引用
int main()
{
	int x=10;
	int y=fun(x);
	cout<<"y="<<y<<endl;
    x=20;
    y=fun(x);
	cout<<"y="<<y<<endl;
	return 0;
}
int& fun(const int &a)//函数的定义
{
	static int b=5;
	b+=a;
	cout<<"a="<<a<<endl;
	return b;
}

        这道程序题是用const限定引用保护实参不被修改。当一个函数的参数被设定为const类型时,它的值就被不允许修改,这时只通过返回值和其他方法进行函数间的数据传递。如果要修改,则程序将会发出报错信息。

  

 


 



  

       

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值