C++学习日记——引用和结构体、引用作为函数返回值

这篇博客探讨了在C++中如何使用引用与结构体,强调了引用作为参数可以避免数据复制提高效率。文章介绍了在不同情况下选择按值传递、指针或引用的准则,并展示了引用如何用作函数返回值,以修改原对象。同时,文中通过示例代码解释了引用作为返回值时的注意事项,避免返回局部变量引用导致的问题。
摘要由CSDN通过智能技术生成

学习目标

学习引用和结构体的搭配使用,以及引用作为函数返回值
在这里插入图片描述


学习内容

引用和结构体:

使用引用参数的原因:
1、能够修改函数外部的数据
2、传递了引用而不是整个数据,没有了副本拷贝,加快了运行速度

一、对使用传递的值而不做修改的函数(指只传值不对外部原先数值修改)

a.如果数据比较小,如内置的基本数据集结构或小结构体,可以用按值传递
b.如果数据是数组,用指针,指针声明为const类型的指针
c.如果数据比较大,如大型结构体,使用const指针或const引用
d.如果数据是类对象,使用const引用

二、对使用传递的值而做修改的函数(指传值且可以对外部原先数值修改)

a.如果是内置数据类型,使用指针
b.如果数据是数组,只能使用指针
c.如果数据是结构,使用引用或指针
d.如果数据是类对象,使用引用

引用作为函数返回
注意事项:
不使用局部变量作为引用的返回对象,避免函数结束时返回不再存在的内存


学习代码

结构体与引用

#include<iostream>
using namespace std;

struct s_time
{
	int hour;
	int min;
};
//结构体引用
s_time gettimes(const s_time& t1,const s_time& t2) {
	int min = (t1.min + t2.min) % 60;
	int hour = (t1.min + t2.min) / 60 + t1.hour+t2.hour;
	s_time total;
	total.hour = hour;
	total.min = min;
	return total;
}

void show(const s_time& total){
	cout << total.hour << "个小时" << total.min << "分钟" << endl;
}


int main() {

	s_time s1 = { 1,30 };
	s_time s2 = { 2,50 };
	s_time total;
	total=gettimes(s1, s2);
	show(total);

	return 0;
}

引用作为函数返回值

#include<iostream>
using namespace std;

	struct s_time
	{
		int hour;
		int min;
	};
	//结构体引用,返回引用,节省空间时间
	s_time& gettimes(const s_time& t1, const s_time& t2) {
		int min = (t1.min + t2.min) % 60;
		int hour = (t1.min + t2.min) / 60 + t1.hour + t2.hour;
		s_time total;
		total.hour = hour;
		total.min = min;
		return total;
	}

	void show(const s_time& total) {
		cout << total.hour << "个小时" << total.min << "分钟" << endl;
	}

	int& func() {
		int a = 10;
		return a;
	}


	int main() {

		s_time s1 = { 1,30 };
		s_time s2 = { 2,50 };
		s_time total;
		total = gettimes(s1, s2);
		show(total);


		return 0;
	}

代码实现

引用与结构体:
在这里插入图片描述

引用作为函数返回值:
在这里插入图片描述


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不说二话的自家人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值