函数的返回值能不能是数组?在其他函数中怎么接收?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数的返回值能不能是数组?在其他函数中怎么接收?相关的知识,希望对你有一定的参考价值。

可以返回一个指针。

int* fun()

int* p = (int*)malloc(10 * sizeof(int));
return p;

但是一般不这样做的,这会造成在调用这个函数的程序中要释放内存。
如果不释放的话,会造成内存泄漏。(当然特殊情况是要这么用的。)

一般的做法是传一个指针进去,空间在外面申请。

#include <stdio.h>
void fun(int* arr, int n)

int i = 0;
for( ; i < n; i++)
arr[i] = i;

int main(void)

int arr[10];
fun(arr, 10);
return 0;


另外
int* fun()

int a[10]=1,2,3,4,5,6,7,8,9,0;
return a;

最好不要写成上面的样子。
参考技术A 返回数组实际上是数组的首地址,也就是指针
接收自然也用指针,例如
#include <stdio.h>
void main()

int* fun();
int *p,i;
p=fun();
printf("%d",*p);
getch();


int* fun()

int a[10]=1,2,3,4,5,6,7,8,9,0;
return a;
本回答被提问者采纳

C语言调用数组返回数组怎么做?

参考技术A

#include <stdio.h>

#define MIN(x,y)

int * add_1();

main()



int * p = add_1();

int b[5];

for(int i=0;i<5;i++)

b[i] = *(p+i);

for(i=0;i<5;i++)

printf("%d",b[i]);



int * add_1()

int static a[5]=1,2,3,4,5;

return a;

扩展资料:

注意事项

一、该数组不能是返回函数的局部变量数组,因为局部变量数组在退出函数后会被释放。

可以是全局变量,静态局部变量,动态分配内存,以及从函数参数传过来的数组地址。

二、返回指针时,无法返回长度,所以需要其它方式传回数组长度,以下是几种常用的方法。

1、约定固定长度。

2、以函数参数返回数组长度。

3、将长度保存在全局变量中。

4、约定数组结束标记。

5、在数组中存储数组长度,如存在第一个元素中。

有些时候需要子函数将一个数组返回出来,通常是两种方法,一种是靠指针,另一种是结构体。

例如指针:

#include <stdio.h>

char *test(char *tmp)

return tmp;

void main(void)

printf("%s",test("第一个测试例子\\n"));

以上是关于函数的返回值能不能是数组?在其他函数中怎么接收?的主要内容,如果未能解决你的问题,请参考以下文章

函数要返回两个值时,主函数的接收要怎么做

C语言中函数调用怎么返回两个值

C语言中,return语句怎么样返回一个数组?

C语言子函数如何返回一个数组,主函数如何接收?

java数组作为参数传入函数怎么让他不变化

C语言调用数组返回数组怎么做?