学习目标
学习引用和结构体的搭配使用,以及引用作为函数返回值
学习内容
引用和结构体:
使用引用参数的原因:
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;
}
代码实现
引用与结构体:
引用作为函数返回值: