C++ 字符串 14-- 18.40.结构体与函数 结构体作为函数参数、结构体指针作为函数返回值

80 篇文章 0 订阅
#include <iostream>
#include <string>
using namespace std;
/*---------------------------------
18.40.结构体与函数
 结构体作为函数参数、结构体指针作为函数返回值
---------------------------------*/
struct time{
	int hour;
	int minute;
};
const int perhour=60;
time* sum(time t1,time t2);
void show(time t);
int main()
{
	time one={8,15};
	time two={6,46};
	time *day=sum(one,two);//与上一节不同的是,这里只是返回结构体的地址
	show(one);			   //因此,不用调用复制构造函数复制返回的结构体
	show(two);
	cout<<"两天的时间总计:";
	show(*day);
	time three={2,12};
	show(three);
	cout<<"三天的时间总计:";
	time *day2=sum(*day,three);
	show(*day2);
	delete day; //在函数sum()中申请的内存得释放
	delete day2;//在函数sum()中申请的内存得释放
	return 0;
}
time* sum(time t1,time t2)
{
	time *total=new time;
	total->minute=(t1.minute+t2.minute)%perhour;
	total->hour=t1.hour+t2.hour+(t1.minute+t2.minute)/perhour;
	return total;
}
void show(time t)
{
	cout<<"hour:"<<t.hour<<"\tminute:"<<t.minute<<endl;
}
/*
运行结果:
hour:8  minute:15
hour:6  minute:46
两天的时间总计:hour:15 minute:1
hour:2  minute:12
三天的时间总计:hour:17 minute:13
Press any key to continue
*/



#include <string.h>
#include <stdio.h>
#include <stdlib.h>//malloc所在头文件
/*---------------------------------
18.40.结构体与函数
 结构体作为函数参数、结构体指针作为函数返回值
---------------------------------*/
typedef struct {  //C语言中定义结构体跟C++中略有区别
	int hour;
	int minute;
}time;
const int perhour=60;//或者按照以下方式
//#define perhour 60
//time* sum(time& t1,time& t2);//【【【【【【【【C语言不支持 引用传递参数】】】】】】】】】
time* sum(time t1,time t2);
void show(time t);
int main()
{
	time one={8,15};
	time two={6,46};
	time *day=sum(one,two);//与上一节不同的是,这里只是返回结构体的地址
	show(one);			   //因此,不用调用复制构造函数复制返回的结构体
	show(two);
	printf("两天的时间总计:\n");
	show(*day);
	free(day); //在函数sum()中申请的内存得释放
	return 0;
}
time* sum(time t1,time t2)
{
	time *total=(time*)malloc(sizeof(time));
	total->minute=(t1.minute+t2.minute)%perhour;
	total->hour=t1.hour+t2.hour+(t1.minute+t2.minute)/perhour;
	return total;
}
void show(time t)
{
	printf("hour:%d",t.hour);
	printf("\tminute:%d\n",t.minute);
}
/*
运行结果:
hour:8  minute:15
hour:6  minute:46
两天的时间总计:
hour:15 minute:1
Press any key to continue
*/

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值