C++按值传递结构

C++按值传递结构
1. 传递和返回结构

       C++使用结构编程时,最直接的方式是处理基本类型那样来处理结构:也就是说,将结构作为参数传递,并在需要时将结构用作返回值使用。然而,按值传递结构有一个缺点。如果结构非常大,则复制结构将增加内存要求,降低系统运行的速度。 但是,当结构比较小时,按值传递结构最合理。

2. 一个例子

       第一个例子处理行程时间。有些地图指出,从Thunder Falls 到Bingo城需要3小时50分钟,而从Bingo城到Gotesquo需要1小时25分钟。对于这种时间,可以使用结构表示————一个成员表示小时值,另一个成员表示分钟值。将两个时间加起来需要一些技巧,因为可能需要将分钟值转换成小时。例如,前面列出的两个时间的总和为4小时75分钟,应将它转换为5小时15分钟。下面开发用于表示时间值的结构,然后再开发一个函数,它接受两个这样的结构为参数,并返回表示参数的和的结构

#include<iostream>

struct tralvel_time
{
    int hours;
    int mins;

};

const int Mins_per_hr = 60;

tralvel_time sum(tralvel_time t1, tralvel_time t2);
void show_time(tralvel_time t);

int main(int argc, char const *argv[])
{
    using namespace std;
    tralvel_time day1 = {5, 45};
    tralvel_time day2 = {4,55};

    tralvel_time trip = sum(day1, day2);
    cout << "Two-day total:";
    show_time(trip);

    tralvel_time day3 = {4,32};
    cout << "Three-day total:";
    show_time(sum(trip, day3));

    return 0;
}

tralvel_time sum(tralvel_time t1, tralvel_time t2)
{
    tralvel_time total;
    total.mins = (t1.mins + t2.mins) % Mins_per_hr;
    total.hours = t1.hours + t2.hours + (t1.mins+t2.mins) / Mins_per_hr;

    return total;
}

void show_time(tralvel_time t)
{
    using namespace std;
    cout << t.hours << "hours, "
         << t.mins << "minutes\n";
}


   转载规则


《C++按值传递结构》 赵小亮 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
C++之直角坐标系和极坐标系的转化 C++之直角坐标系和极坐标系的转化
C++之直角坐标系和极坐标系的转化 1. 转化思路       关键在于编写一个将直角坐标转换为极坐标的函数。该函数接受一个rect参数,并返回一个polar结构。这需要 使用数学库中的函数,因此程
2020-01-17
下一篇 
C++标准库之cctype C++标准库之cctype
C++标准库之cctype 1. 什么是cctype?       C++从C语言继承了一个与字符相关的、非常方便的函数软件包,它可以简化诸如确定字符是否为大写字母、数字、标点符号等工作,这些函数的
2020-01-06
  目录