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

如题所述

首先,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;
}

运行结果如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-16
可以反回“堆”(非栈)上的数组的首地址.如:int *fun(int s){int *a;a=(int*)new char[s*sizeof(int))];return a;}
第2个回答  2017-08-04
可以将函数类型定义为指针类型,return返回数组指针
第3个回答  2017-08-13
c语言的函数中不能返回多个参数,如果要返回数组,可以返回数组的首地址
第4个回答  2017-07-27
int a[10];
int* fun(int *p)
{
for(int i = 0; i < 10; i++)
{
p[i] = i;
}
return p;

}
相似回答