如何用函数原型返回多个参数

How to return multiple parameter with function prototype

本文关键字:参数 返回 原型 何用 函数      更新时间:2023-10-16

定义只返回y参数,我只是在学习函数原型

#include <iostream>
using namespace std;
    int doDateofBirth(int m , int d , int y);
    int main(){
        cout << "My DoB is, " << doDateofBirth(4,14,1998) << endl;

    }
    int doDateofBirth(int m,int d,int y){
        return m,d,y;
    }

c++中不能返回多个对象

return m,d,y;

使用逗号操作符,计算左侧表达式,丢弃其值,然后返回右侧表达式的值。在这种情况下,它就像你写

一样
return y;

你可以创建一个类来表示一个日期,然后返回它:

struct Date {
    //maybe add protection, constructors, methods, etc
    int month;
    int day;
    int year;
};
Date doDateOfBirth (const Date& something);

想返回多少就返回多少,使用:boost::tuple

http://theboostcpplibraries.com/boost.tuple

在c++中,如果您想返回多个变量,请考虑以下选项之一:

  • 根据对象的大小,将想要返回的变量分组为结构体或类,并在程序中使用结构体/类作为参数
  • 使用参考参数
根据您的示例,您可以使用引用变量选项:

原型
void doDateofBirth(int &m , int &d , &int y);
实现:

void doDateofBirth(int &m,int &d,int &y){
    // do your coding here
}

函数是这样调用的:月、日、年;dateofbirth(月,日,年);

通常当您觉得需要返回多个值时,这些值实际上代表一个更大的整体,您应该使用包含这些值的不同数据类型来表示。例如:

struct DateOfBirth
{
    const int month;
    const int day;
    const int year;
};
DateOfBirth doDateofBirth(int m, int d, int y){
    return { m, d, y };
}

doDateofBirth在这里的行为与构造函数完全相同,所以我们将其设置为构造函数:

struct DateOfBirth
{
    DateOfBirth(int m, int d, int y) : month(m), day(d), year(y) { } // constructor
    const int month;
    const int day;
    const int year;
};

可以这样使用:

int main()
{
    DateOfBirth mybd(666, 42, 69);
    printf("%d/%d/%dn", mybd.year, mybd.month, mybd.day);
}