【发布时间】:2021-09-21 11:25:05
【问题描述】:
#include <stdio.h>
int *func()
{
int *a=malloc(5);
int *b=malloc(5);
for(int i=0;i<5;i++)
{
a[i]=i+1;
b[i]=i+5;
}
int *l= malloc(2);
l[0]=a;
l[1]=b;
//printf("%p %p ",l[0],l[1]);
return l;
}
int main()
{
int *k=func();
}
对于上述代码,如何将 a,b 数组返回给 main 函数? 在为两个数组 a 和 b 赋值后,我将它们的地址分配给了新数组 l。现在将l返回给main后,如何在main函数中同时指定数组a和b的值?
【问题讨论】:
-
您使用返回值的方式肯定令人惊讶(如果函数 [would] 返回两个数组,则无法正常工作)。
-
你不能。在 C 中,您可以(最多)返回 one 值。这不能是一个数组。有各种变通方法,但答案是无法完成。
-
我不明白您为什么在您接受答案后对问题做出重大改变 - 为什么?
-
一般来说malloc和free应该在同一个层次上做,最好是同一个函数。在 main 中创建数组并将它们传递给 func 进行填充。
标签: arrays c return return-type function-definition