C语言函数如何return数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言函数如何return数组?相关的知识,希望对你有一定的参考价值。

有没有办法让一个函数return一个这个函数中的数组?请给个小例子并解释一下,谢谢!

数组在作为函数返回值或者函数参数时,实际上只作为指针来返回或者传递的。因此返回值用指针数据类型。比如下面的代码:

int g_a[4] = 1,2,3,4;
int * retn_arrary() //返回值用指针类型即要。

return g_a; 
参考技术A

C语言里无法返回数组,返回指针倒是可以,但是返回一个指向局部变量的指针没有任何意义

#include <stdio.h>
#include <string.h>
char *func(const char *s)

char *p=(char *)malloc(sizeof(char)*strlen(s));
strcpy(p,s);
return p;


int main(void) 

char *s=func("hello world");
puts(s);
return 0;

本回答被提问者采纳
参考技术B

返回数组绝不可能,跟数组作为参数的情况一样

几种变通办法:

    返回成员是数组的结构体

    返回指向静态数组的指针

    让指向数组的指针和数组长度作为参数,把要返回的东西memcpy到作为参数的指针指向的数组中

参考技术C 函数不须用的return就能直接返回数组的,

void fun(char x[])
x[0]='a';

main()
char a[10]="12345";
void fun(char x[]);
fun(a);
printf("%s\n",a);


C语言如何给用函数二维数组动态赋值

1、当成普通数组使用,用for循环即可赋值。
2、例程:
#include

#include

int
main(void)

int
*a=NULL;
int
i;
a=malloc(sizeof(int)*10);/*动态创建一个有10个int元素的数组*/
if
(a==NULL)

/*a==NULL表示空间分配失败*/
fprintf(stderr,"MEMORY
ERROR");
return
-1;

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

a[i]=i;
/*对数组进行赋值操作*/

free(a);/*动态分配的空间需要用free()函数释放*/
return
0;
参考技术A 二维数组名不能直接传给二级指针,应该按以下方式使用:
int nChoose;
scanf("%d", &nChoose); // 让用户输入二维数组的大小
int **a = (int **)malloc(nChoose * sizeof(int *));
for (int i = 0; i < nChoose; i ++)

a[i] = (int *)malloc(nChoose * sizeof(int));

Scan(a, nChoose);
Calc(a, nChoose);
// 最后要释放数组,也要循环本回答被提问者采纳
参考技术B 二维数组名不能直接传给二级指针,应该按以下方式使用:
int
nChoose;
scanf("%d",
&nChoose);
//
让用户输入二维数组的大小
int
**a
=
(int
**)malloc(nChoose
*
sizeof(int
*));
for
(int
i
=
0;
i
<
nChoose;
i
++)

a[i]
=
(int
*)malloc(nChoose
*
sizeof(int));

Scan(a,
nChoose);
Calc(a,
nChoose);
//
最后要释放数组,也要循环

以上是关于C语言函数如何return数组?的主要内容,如果未能解决你的问题,请参考以下文章

c语言函数返回数组

C语言如何给用函数二维数组动态赋值

C语言 怎么返回一个数组

c语言中如何判断一数是不是在一已知数组中?有没有这样的函数

C语言中函数中传入一个数组,并且返回一个数组

c语言如何给指针参数赋值为null?