C语言函数返回一维,二维数组
参考这位大佬思路:https://blog.csdn.net/earbao/article/details/53401800
最近在学习C语言时遇到这样一个问题,如何利用函数返回一个数组(要想一个函数执行后返回多个数据,或者是对数组操作之后返回数组)
C语言是不允许直接返回数组的,要想返回数组中的数据,必须使用指针。
由于函数执行后,会进行弹栈操作,在函数中定义的指针指向地址的空间会被释放,指针变成了野指针,所以不能返回指针指向 函数中定义的数组(局部变量数组),可以进行以下操作正确的返回指针:
一:定义静态数组
#include<stdio.h>
int *add(int a[5],int b[5]){
static int c[5]={0};
int *p = c;
for(int i=0;i<5;i++){
c[i]=a[i]+b[i];
}
return p;
}
int main(){
int a[5]={1,2,3,4,5};
int b[5]={1,2,3,4,5};
int *p = add(a,b);
for(int i=0;i<5;i++){
printf("%d ",p[i]); // printf("%d",*(p+i));
}
return 0;
}
</