这是将数组从函数传递回main的正确方法

时间:2014-06-23 14:54:54

标签: c arrays function

程序运行没有错误,但它在运行此函数后停止,因为它似乎没有传回数组。这是将数组传递回函数的正确方法吗?我只包括下面的基本代码。请你指出我可能错在哪里。

int matchedNumbersfunc(int lotoNumbers[],int ticketNumbers[], int *numbersRight);

int main()
{
    int lotoNumbers[7];
    int ticketNumbers[7];
    int matchedNumbers[7];
    int numbersRight = 0;

    matchedNumbers[7] = matchedNumbersfunc(ticketNumbers, lotoNumbers, &numbersRight);

    return 0;
}

int matchedNumbersfunc(int lotoNumbers[],int ticketNumbers[], int *numbersRight)
{
    int matchedNumbers[7];
    int i, k ,j;
    *numbersRight = 0; 

    for(k=0;k<7;k++)
    {
        matchedNumbers[k] = 0;
    }

    for(i=0;i<7;i++)
    {
        for(j=0;j<7;j++)
        {
            if(ticketNumbers[i] == lotoNumbers[j])
            {
                matchedNumbers[i] = ticketNumbers[i];
            }
        }
        if(matchedNumbers[i] != 0)
        {
            printf("You have a winning number: %d\n", matchedNumbers[i]);
            *numbersRight = *numbersRight + 1;

            if(matchedNumbers[6] != 0)
            {
                *numbersRight = *numbersRight - 1;
            }
        }
    }

    return matchedNumbers[7];
}

1 个答案:

答案 0 :(得分:2)

因此,您返回的是单个值而不是数组。当它发生时,你将从数组的末尾返回一个值,并从另一个数组的末尾分配一个值。您的数组包含7个元素,索引为06

您需要做的是将数组传递给函数并让函数填充它。一个简单的例子:

void foo(int array[], size_t count)
{
    for (size_t i = 0; i < count; i++)
        array[i] = i;
}

你会这样称呼:

int myArray[7];
foo(myArray, 7);
相关问题