作为函数参数的结构数组

Array of Structs as Function Argument

本文关键字:结构 数组 参数 函数      更新时间:2023-10-16

我有一个structs数组,我只想把它传递给函数进行排序。我做错了什么,把structs的数组传递给函数?原型、调用和定义中有哪些错误?

注意-我意识到我还没有初始化结构数组。在我实际的代码中,数组中有来自文本文件的数据。这与我提出的问题无关。因此,请不要评论数组中没有任何内容。

下面是一个我无法工作的代码示例:

#include <iostream>
using namespace std;
struct checkType
{
    char date[12];
    char checkNum[8];
    float amount;
};
void bubbleSort(checkType, const int);
int main()
{
    const int NUM = 5;
    checkType checkArray[NUM];
    bubbleSort(checkArray, NUM);
    return 0;
}
void bubbleSort(checkType array[], const int SIZE)
{
    bool swap;
    checkType temp;
    do
    {
        swap = false;
        for (int count = 0; count < (SIZE - 1); count++)
        {
            if (strcmp(array[count].date, array[count + 1].date) > 0)
            {
                temp = array[count];
                array[count] = array[count + 1];
                array[count + 1] = temp;
                swap = true;
            }
        }
    } while (swap);
}

此代码产生以下错误:

错误C2664:"void bubbleSort(checkType,const int)":无法转换从"checkType[5]"到"checkType"的参数1

因此,我尝试将函数调用从bubbleSort(checkArray, NUM);更改为bubbleSort(checkArray[NUM], NUM);

此代码会产生以下错误:

错误LNK2019:未解析的外部符号"void __cdeclbubbleSort(struct-checkType,int)"(?bubbleSort@@YAXUcheckType@@H@Z)在函数_main 中引用

错误LNK1120:1个未解析的外部

有人能解释一下我做错了什么吗?

正向声明:

void bubbleSort(checkType, const int);

定义:

void bubbleSort(checkType array[], const int SIZE)

这些都不一样。远期申报应为:

void bubbleSort(checkType[], const int);