问题描述
如何将结构数组作为参数发送到函数中?
雇员变量是一个结构体。
我的功能:
void arraySort(struct Employee *employee[])
{
bool flag = false;
for (int i = 0; i < 5000; i++)
{
int empID1 = employee[i]->empID;
int empID2 = employee[i + 1]->empID;
flag = Employee().compareEmpID(empID1,empID2);
if (flag == true)
{
Employee swap;
swap = *employee[i + 1];
*employee[i] = *employee[i + 1];
*employee[i + 1] = swap;
}
}
}
bool Employee::compareEmpID(int empID1,int empID2)
{
if (empID1 >= empID2)
return true;
return false;
}
我试图通过使用员工数组结构作为指针从 main 调用对 arraySorts 函数的调用:
arraySort(*employee);
解决方法
函数 compareEmpID 必须是 struct employee 中的静态方法,并通过调用 #include<iostream>
using namespace std;
struct Employee {
int empID;
static bool compareEmpID(int empID1,int empID2) {
return empID1 > empID2;
}
};
void arraySort(Employee *employees[],int size) {
bool flag = false;
Employee *swap;
for(int i=0; i<size-1; i++) {
int empID1 = employees[i]->empID;
int empID2 = employees[i+1]->empID;
flag = Employee::compareEmpID(empID1,empID2);
if(flag) {
swap = employees[i+1];
employees[i+1] = employees[i];
employees[i] = swap;
}
}
}
int main(int argc,char* args[]) {
Employee** employee;
employee = new Employee*[2];
employee[0] = new Employee;
employee[0]->empID = 5;
employee[1] = new Employee;
employee[1]->empID = 1;
arraySort(employee,2);
cout << "emp[0]: " << employee[0]->empID << endl;
cout << "emp[1]: " << employee[1]->empID << endl;
delete employee[0];
delete employee[1];
delete[] employee;
return 0;
}
来调用。
您的 arraySort 方法存在一些问题。
- 您对数字 5000 进行了硬编码,这意味着您的数组需要有 5000 个或更多元素,否则您将收到关于非法内存访问的错误。
- 变量 swap 应该是一个指针,并在 for 循环之外声明。
- 您的交换逻辑有误。
我根据您的代码重写了程序并对其进行了测试。
ethereum.request
希望这能帮助您加快学习进度。