程序查错——参数引用

程序查错——参数引用

#include <string.h>
using namespace std;

const float pi = 3.14f;
float f;

float f1(float r)
{
	f = r*r*pi;
	return f;
}

float& f2( float r)
{
	f = r*r*pi;
	return f;
}

int main()
{
   float f1(float=5);
	float& f2(float=5);
	
	float a = f1();
	float &b=f1();
	float c = f2();
	float &d=f2();
	
	cout << d << f << endl;
	
   return 0;
}

这里f1函数返回的是全局变量f的值,f2函数返回的是全局变量f的引用。

21、22行正确,声明函数f1、f2的默认参数;(设置默认参数时,声明和定义中只需要在其中一个里设置就行)

25行错误,变量b被赋值为f1()的返回值。但是这里的b被定义为float &,这是错误的。因为在f1()函数的末尾,return的是全局变量f,但并不是返回f本身,而是对f的值进行了一次拷贝,所以对于b来说,f1返回的值并不是f本身,而是一个拷贝的值,对b来说,该值是一个常量,所以需要用常量引用去接受。即const float &b = f1();便不会报错。

26行,尽管f2返回的是引用,但是引用实际上只是一个别名而已,这里可以理解为正常的变量与变量之间的赋值。

27行返回的是全局变量f的引用,对d来说,f就是一个变量,因此用普通的引用去接收没啥毛病。此外,实际上这里又创建了一个引用去引用f的引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值