程序运行没有错误,但它在运行此函数后停止,因为它似乎没有传回数组。这是将数组传递回函数的正确方法吗?我只包括下面的基本代码。请你指出我可能错在哪里。
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];
}
答案 0 :(得分:2)
因此,您返回的是单个值而不是数组。当它发生时,你将从数组的末尾返回一个值,并从另一个数组的末尾分配一个值。您的数组包含7
个元素,索引为0
到6
。
您需要做的是将数组传递给函数并让函数填充它。一个简单的例子:
void foo(int array[], size_t count)
{
for (size_t i = 0; i < count; i++)
array[i] = i;
}
你会这样称呼:
int myArray[7];
foo(myArray, 7);