c++如何返回一个数组

#include<iostream>
using namespace std;
int fun(int a,int b);
int set(int c);
int main()
{
int a,b,c;
cin>>a>>b>>c;
if(fun(a,b)==set(c))
{
cout<<"这两个数组相等"<<endl;
}
return 0;
)

)
}
int fun(int a,int b)
{
int math[4],4math[4];
math[0]=a/10;
math[1]=a%10;
math[2]=b/10;
math[3]=b%10;
return math;

}
int set(int c)
{
int d[4];
a[0]=c/1000;
a[1]=c/100%10;
a[2]=c/10%10;
a[3]=c%10;
return a;
}
这相想法是好的,但是就是得不出结果,请你们帮我看一下

可以使用静态变量进行返回、用指针传递、通过返回传入数组的指针三种方法实现;
代码分别如下:
// 方法1,用静态变量进行返回
char *SubFunction(void)
{
static char szText[5] = "adfa"; // 用静态空间
//对p进行赋值操作
return szText;
}
void Caller() // 这个函数调用SubFunction
{
TRACE("%s\n", SubFunction);
}

// 方法2,用指针传递
void SubFunction(char *pText1, char *pText2)
{
// 对pText1, pText2运算
strcpy(pText1, "love");
strcpy(pText2, "you");
return;
}
void Caller() // 这个函数调用SubFunction
{
char szText1[5], szText2[5]; // 当然这里也可以动态分配内存
SubFunction(szText1, szText2); // szText1, szText2就是带回的值
TRACE("%s %s\n", szText1, szText2);
}

方法3 通过返回传入数组的指针
#include<stdio.h>
double *copy1(double array[],double c1[],int n);
double *copy2(double array[],double c2[],int n);
void main(void)
{
int size=4;
double source[4]={1,2.3,4.5,6.7};
double first_copy[4];
double second_copy[4];
double *fp,*sp;
fp=copy1(source,first_copy,size);
printf("The first copy: %f,%f,%f,%f\n",fp[0],fp[1],fp[2],fp[3]);
sp=copy2(source,second_copy,size);
printf("The second copy: %f,%f,%f,%f\n",sp[0],sp[1],sp[2],sp[3]);
}
double *copy1(double array[],double c1[],int n)
{
int i;
for(i=0;i<n;i++)
c1[i]=array[i];
return c1;
}
double *copy2(double array[],double c2[],int n)
{
double *p;
int i;
for(i=0;i<n;i++)
{
p=&array[i];
c2[i]=*p;
}
return c2;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-05-16
在C/C++中是不允许返回数组的,只能返回数组的指针。但这样做危险性很大,如果返回的是被调函数中定义的自动型数组,函数结束后数组空间已经不受代码控制了,通过返回的指针在主调函数中操作这块空间会产生不可预料的结果。所以一般应在主调函数中声明数组,把它的指针传给被调函数,在被调函数中通过这个指针直接操作主调函数中的数组。也可以在被调函数中动态声明数组,将它的指针返回给主调函数进行后续操作,但不能忘记在操作完毕后释放动态数组,不然会产生内存泄漏问题……
第2个回答  推荐于2016-02-08
没看你写的代码,我就帖一个我之前自己写的让数组反转的函数,ary1反转后给ary3,看看能不能给你些启发
void main{
int ary1[10]={1,2,3,4,5,6,7,8,9,10};

int *ary2=Turn(ary1,10);

int ary3[10];

int i=10;

while(i){
i--;
ary3[i]=ary2[i];
}



int *Turn (int *data,int i){

int *p=data;
int *q=p+i-1;

while (p<q){
int temp = *p;
*p = *q;
*q = temp;

p++;
q--;
}

return data;

}本回答被提问者采纳
第3个回答  2010-12-27
可以把数组作为函数参数,或者直接返回数组头指针本回答被网友采纳
第4个回答  2010-12-27
返回的是数组的首地址,原程序中语句"fun(a,b)==set(c)"比较的是两个数组的首地址是否相等,因为系统对他们分配的空间肯定不一样,所以不会相等,应改为比较两地址开始的空间内容.
所以可以用两个指针或两个数组接收函数传来的地址,然后比较。
相似回答