将数组返回main的方法是什么? 我知道数组已经创建但是无法返回它,所以当我尝试使用它时会说“分配中的类型不兼容”?
int* get_array(){
int i = 0, j;
int *array = malloc(6);
srand(time(NULL));
while (i != 6)
{
int random_number = ((rand() % 49) + 1);
int ok = 1;
for (j = 0 ; ok && j != i ; j++)
{
ok &= (random_number != array[j]);
}
if (ok)
{
array[i++] = random_number;
}
}
return array;
}
然后从主要调用它: -
int main()
{
int i;
int* get_lotto_numbers();
int numbers[6];
numbers = get_lotto_numbers();
for(i = 0; i < 6; i++)
{
printf("%d ", numbers[i]);
}
}
任何评论都会有所帮助。
答案 0 :(得分:5)
C中的数组是不可修改的左值。将int numbers[6]
中的main()
更改为int *numbers
,您就可以了。
确保free()
它!
编辑说明:在get_lotto_numbers
函数中声明main
声明有点奇怪。
答案 1 :(得分:2)
将数组作为参数传递:
void get_array(int array[])
不要返回数组,只返回。然后用:
调用它get_array(numbers);
答案 2 :(得分:0)
This should probably work for you.....
int* get_array(){
int i = 0, j;
int *array = malloc(6);
/*do your stuff here*/
array[0]=71;
array[1]=77;
array[2]=72;
array[3]=73;
array[4]=74;
array[5]=75;
return array;
}
int main()
{
int i;
int *numbers;
numbers = get_array();
for(i = 0; i < 6; i++)
{
printf("%d ", numbers[i]);
}
}