做过很多与函数返回值为数组的题,一开始无从下手,现在看看懂了一些,在次写下
1.分配存储空间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include<bits/stdc++.h> using namespace std; int *ff(){ static int a[10]; /* 一般而言,局部变量在函数调用完 之后,所占用内存空间就会被释放, 如 ,int a[maxsize]; 但,如果用 static之后, 变量就会存储在静态存储区, 函数调用完之后,并不会释放. 还有一种 int *a; a=(int*)malloc(maxsize); 动态分配存储空间,函数调用 完之后,也不会释放,除非程序 结束,或主动释放 */ for(int i=0;i<10;i++) a[i]=i; return a; } int main(){ int *a; a=ff(); for(int i=0;i<10;i++) printf("%d\n",a[i]); return 0; } |
2.结构体
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include<bits/stdc++.h> using namespace std; typedef struct arr{ int a[10]; }arr; arr farr(){ arr a; for(int i=0;i<10;i++) a.a[i]=i; return a; } int main(){ arr a; a=farr(); for(int i=0;i<10;i++) printf("%d\n",a.a[i]); return 0; } |
这只是一维数组,当是多维数组时,个人喜欢用结构体,如
struct arr{ int a[10][10][10]; }a