C 将数组从函数传递到主函数
在C中,如何将数组从函数传递到mainC 将数组从函数传递到主函数,c,arrays,function,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++;
#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;
}
#包括
整数合并(整数a[],整数b[]
{
int i=0;
int j=0;
int k=0;
INTC[17];
而(i如果希望函数返回数组,有两种方法:
函数必须返回指向数组中第一项的指针(实际上数组本身是C中的指针)。在这种情况下,函数必须声明为int*merge(int a[],int b[])
您必须将数组传递给将由函数本身修改的函数。您可以这样做:int merge(int A[],int B[],int C[])
如果希望函数返回数组,有两种方法:
函数必须返回指向数组中第一项的指针(实际上数组本身是C中的指针)。在这种情况下,函数必须声明为int*merge(int a[],int b[])
您必须将数组传递给将由函数本身修改的函数。您可以这样做:int merge(int A[],int B[],int C[])
一种解决方案是采用三个阵列参数:
void merge(int a[], int b[], int c[]);
然后您可以合并a
和b
并将结果放入c
。调用该函数的人负责创建用作c
的数组,使其足够大。一种解决方案是取三个数组参数:
void merge(int a[], int b[], int c[]);
然后您可以合并a
和b
并将结果放入c
中。调用该函数的人负责创建用作c
的数组,使其足够大。这里有三个想法
在C中不能返回数组,但可以返回包含数组的struct
,因此可以这样做
如果您只说intx[3];return x;
将返回x的地址。
如果它是静态的或malloc-ed的,这没关系,但是如果它是一个普通的本地自动存储类,它将丢失得很厉害。
因此,无论您做什么,都应该malloc(3)
函数中的对象,或者至少使其成为静态的
您可以将新数组作为参数传递,从而避免返回它的问题
这里有三个想法
在C中不能返回数组,但可以返回包含数组的struct
,因此可以这样做
如果您只说intx[3];return x;
将返回x的地址。
如果它是静态的或malloc-ed的,这没关系,但是如果它是一个普通的本地自动存储类,它将丢失得很厉害。
因此,无论您做什么,都应该malloc(3)
函数中的对象,或者至少使其成为静态的
您可以将新数组作为参数传递,从而避免返回它的问题
还有。你的问题没有意义。你想让你的函数返回一个数组吗?先生,我的目标是组合两个数组并将新数组返回给主函数。我已经正确地进行了缩进,但是代码在站点上没有正确地读取。你可以很容易地传递指针。你的尝试怎么会失败呢?很抱歉侄女..还有。你的问题没有意义。你想让你的函数返回一个数组吗?先生,我的目标是组合两个数组,然后将新数组返回给主函数..我已经正确地进行了缩进,但是代码在站点上没有正确的可读性..你可以很容易地传递指针。你的尝试怎么会失败?很抱歉Incovincence..不,不,不。数组不是指针。它们在传递时会衰减为指针,但它们是不同的数据类型。@StoryTeller很高兴知道,我认为它是指向数组第一个元素的指针。谢谢:)我不确定你是否在讽刺。但要想看出区别,最确切的方法是将数组声明为print,它的大小是sizeof
。而不是将指针声明为print。你可能还想在选项1中添加一个警告,即返回的指针不能指向局部变量。@StoryTeller你是对的,我想:)还找到了更多信息此处的信息:不,不,不。数组不是指针。它们在传递时会衰减为指针,但它们是不同的数据类型。@StoryTeller很高兴知道,我认为它是指向数组第一个元素的指针。谢谢:)我不确定你是否在讽刺。但要想看出区别,最确切的方法是声明一个数组打印它的大小是sizeof
。而不是使用指针。您可能还希望在选项1中添加一个警告,即返回的指针不能指向局部变量。@StoryTeller您是对的,我想:)还可以在此处找到更多信息: