在C中将数组从函数返回到main?

时间:2014-03-19 23:49:31

标签: c arrays function pointers return

将数组返回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]);
      }
}

任何评论都会有所帮助。

3 个答案:

答案 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]);
      }
}