关于C++中以结构体数组为函数形参实参的too many initializers的问题

来源:百度知道 编辑:UC知道 时间:2024/07/03 04:46:27
我写完这个程序以后,编译器报错说
int px(staff,n);
int search(staff,n);
这两句too many initializers,不知道什么原因 请高手指教~~~
下面是程序的代码:
//*利用函数完成公司员工的信息的输入,并利用数组名作为函数的形参和实参完成对信息的排序功能(按照职工编号),
//*利用函数完成某职工的信息查询的功能。
#include<iostream>
#include<string>
#define N 1000
using namespace std;
struct info
{
string name;
string number;
char sex;
string position;
}staff[N];
int input(int n)
{
cout<<"Please input the information of each staff:"<<endl;
for(int i=0;i<n;i++)
cin>>staff[i].name>>staff[i].number>>staff[i].sex>>staff[i].position;
return 0;
}
int px(info staff[],int n)
{
info temp;
for(int pass=1;pass<n;pass++)
for(int i=0;i<n-pass;i++)
if(staff[i].number>staff[i+1].number)
{
temp=staff[i];
staff[i]=staff[i+1];
staff[i+1]=temp;
}

调用函数时正确格式是:
input(n);
px(staff, n);
search(staff, n);

否则编译器理解成:
int input = n;
int px(staff,n); //一个int型px变量,初始化列表为staff,n
//但是int变量最多只有一个初始化量,所以显示too many initializers(太多初始化值)