通过引用将struct数组传递给函数

时间:2013-12-01 08:45:43

标签: c++

这方面有很多资源,但我无法理解这个概念。

这是我尝试使用指针:

struct PEOPLE{
   int id;
   string name;
   float cash;
};

int main(){
   PEOPLE data[5];
   getdata(data);

   for(int i = 0; i < 5; i++){
      cout << data[i].id << " " << data[i].name << "  " << data[i].cash;
   }
   return 0;
}

void getdata(PEOPLE &*refdata[5]){
    refdata[0].id = 11;
    refdata[0].name = "John Smith";
    refdata[0].cash = 200.30;
    //and so on for index 1,2,3,4
}

这种方法是否正确,我怀疑它是否有效。

2 个答案:

答案 0 :(得分:1)

这适用于编译时已知大小的数组:

template<size_t N >
void getdata(PEOPLE (&refdata)[N] )
{
   refdata[0] = ....;
}

限制为5,

void getdata(PEOPLE (&refdata)[5] )
{
   refdata[0] = ....;
}

答案 1 :(得分:0)

您可以简单地将其定义为:

void getdata(PEOPLE refdata[])

并致电:

 getdata(data);