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到作为参数的指针指向的数组中
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数组?的主要内容,如果未能解决你的问题,请参考以下文章