将结构传递给功能

时间:2014-05-12 09:47:12

标签: c++ data-structures struct parameters

我在c ++中有一个需要一个结构才能工作的函数,但是我 很难过去。结构如下所示:

struct RecAbbo{
    char name[20];
    char surname[20];
    int games;
    int won;
    int same;
    int lost;
    int place;
    int money;
}Abbo[100];

首先我尝试了这个:

void function(structure_name);

这没用,所以我搜索了互联网。我发现你应该这样做:

void function(structure_name struct);

但它不起作用。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

应该是其他方式

void function(struct RecAbbo structure_name)

此外,确保在原型使用函数 function 的原型之前定义结构。

但是在C ++中,你根本不需要使用struct。所以这可以简单地成为:

void function(RecAbbo structure_name)

答案 1 :(得分:1)

首先,我认为您应该对namesurname使用std::string,并对Abbo数组使用std::array

struct RecAbbo {
    std::string name;
    std::string surname;
    int games;
    int won;
    int same;
    int lost;
    int place;
    int money;
};
std::array<RecAbbo, 100> Abbo;

您可以通过引用或func引用声明接受RecAbbo的函数const

void func(RecAbbo&);
void func(RecAbbo const&);

如果您不打算修改struct,建议使用后者。

如果要传递数组,可以使用:

void func(std::array<RecAbbo, 100>&);
void func(std::array<RecAbbo, 100> const&);

或使用 iterators

来概括它
template<class It>
void func(It begin, It end);

或使用模板:

template<std::size_t Size>
void func(std::array<RecAbbo, Size>&);

template<std::size_t Size>
void func(std::array<RecAbbo, Size> const&);

答案 2 :(得分:0)

使用

void function(RecAbbo any_name_for_object);

这样可行。