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

 我来答
White_MouseYBZ
2017-08-21 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6647万
展开全部

首先,C/C++只能返回数组的指针而不能返回整个数组。即使返回数组的指针,但如果函数中的数组是自动性质,那将是危险的。这是比较正宗的表述。如果确实需要从函数中返回自动性质的数组的全部元素值,有没有办法呢?有。由于C/C++是允许返回结构体的,可以定义一个结构体模板,把数组作为成员安排在其中,函数中临时声明结构体变量,操作其中的数组;完毕后返回结构体变量,在主调函数中用同类型的结构体变量接收就可间接实现“返回一个数组”。举例代码如下:

#include "stdio.h"
struct A{
int m[30];//把数组m安排在结构体A中
};
struct A fun(int n){
int i,j,k;
struct A s;//在函数中声明自动型结构体变量s
for(i=0;i<n;s.m[i++]=i+1);//为结构体成员数组m赋值1~15
for(j=n-1,i=0;i<j;i++,j--)//倒序这个数组
k=s.m[i],s.m[i]=s.m[j],s.m[j]=k;
return s;//返回结构体变量s
}
int main(int argc,char *argv[]){
A a;//主调函数中声明同类型结构体变量a接收函数fun的返回值
int i;
a=fun(15);//用15调用fun(不要大于30,只是举例),将结果赋于a
for(i=0;i<15;i++)//输出看看是不是倒序了...
printf("%d ",a.m[i]);
printf("\n");
return 0;
}

运行结果如下:

匿名用户
2013-09-16
展开全部
可以反回“堆”(非栈)上的数组的首地址.如:int *fun(int s){int *a;a=(int*)new char[s*sizeof(int))];return a;}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
你丶好
2017-08-04 · 超过26用户采纳过TA的回答
知道答主
回答量:88
采纳率:87%
帮助的人:34.7万
展开全部
可以将函数类型定义为指针类型,return返回数组指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小罗卜头LMY
2017-08-13 · TA获得超过184个赞
知道小有建树答主
回答量:141
采纳率:66%
帮助的人:40万
展开全部
c语言的函数中不能返回多个参数,如果要返回数组,可以返回数组的首地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
k寂寞的小炮
2017-07-11 · TA获得超过464个赞
知道小有建树答主
回答量:469
采纳率:59%
帮助的人:182万
展开全部
int[] f(){
int[] a = {1,2,3};
return a;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式