将数组从函数传递给main

时间:2013-02-10 22:20:18

标签: c arrays function

如何在C中将数组从函数传递给main?

#include<stdio.h>
int merge(int a[],int b[])
{
    int i=0;
    int j=0;    
    int k=0;
    int c[17];
    while(i<10&&j<8)
    {
        if(a[i]<b[j])
        {

            c[k]=a[i];
            i++;
        }
        else
        {
            c[k]=b[j];
            j++;
        }
        k++;
    }
    while(i<10)
    {
        c[k]=a[i];
        i++;
        k++;
    }
    while(j<10)
    {
        c[k]=b[j];
        j++;
        k++;
    }
    return c;
}

3 个答案:

答案 0 :(得分:2)

一种解决方案是采用三个数组参数:

void merge(int a[], int b[], int c[]);

然后,您可以合并ab,并将结果放入c。调用该函数的人负责创建用作c的数组足够大。

答案 1 :(得分:1)

如果您希望函数返回数组,有两种方法:

  1. 该函数必须返回指向数组中第一项的指针(实际上数组本身是C中的指针)。在这种情况下,您的函数必须声明为int *merge(int a[], int b[])
  2. 您必须将数组传递给将由函数本身修改的函数。以下是您可以执行此操作的方法:int merge(int A[], int B[], int C[])

答案 2 :(得分:1)

以下是三个想法......

  1. 您无法在C中返回数组,但可以返回包含数组的struct,因此您可以这样做。
  2. 如果您只是说int x[3]; return x;将返回x.的地址如果它是静态的或malloc编辑的那就没关系,但是如果它是普通的自动存储类本地则会丢失。 无论你做什么,你都应该malloc(3)函数中的对象,或者至少使它成为静态。
  3. 您可以将新数组作为参数传递,从而避免返回它的问题。