提供2个办法供参考:
把自定义函数中的数组创建为static存储性质,并把首地址及大小返回给主函数。
在自定义函数中创建数组时用动态方法建立的堆上,把首地址及大小返回给主函数,在主函数中使用完毕后释放。
追问第一种方法会了 第二种你举个栗子呢 谢谢
追答#include "stdio.h"
#include <stdlib.h>
int *f(int *n){//自定义函数
int i,*p;
*n=10;
p=(int *)malloc(sizeof(int)*(*n));//在堆上动态创建数组
for(i=0;i<*n;p[i++]=20+i);//举例赋值
return p;
}
int main(int argv,char *argc[]){
int n=0,*q,i;
for(q=f(&n),i=0;i<n;printf("%5d",q[i++]));//调用f创建数组并在这里使用
free(q);//释放自定义函数中动态创建的数组
printf("\n");
return 0;
}
举例结果:
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/77094b36acaf2eddcdcf8274861001e939019375?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)