微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。