如何使用指针将数组结构发送到函数中

问题描述

如何将结构数组作为参数发送到函数中?
雇员变量是一个结构体。
我的功能

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

希望这能帮助您加快学习进度。