免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 8650 | 回复: 25
打印 上一主题 下一主题

求返回一个数组的方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-19 20:42 |只看该作者 |倒序浏览
首先想知道一下返回一个数组有没有意义,如果答案是肯定的话,我想知道怎么返回,
我刚开始时的方法是创建一个临时数组,使用完后再返回,但是这样返回的是一个临时变量,不安全,所以想知道有没有好的方法,
如果返回一个全局数组或者返回一个参数指针我觉得不太好,不过这种感觉不知道对不对~~~~
所以请大家指点一二~~

论坛徽章:
0
2 [报告]
发表于 2006-10-19 20:57 |只看该作者
呵呵,在堆上分配,没什么不安全的吧?

返回指针有问题吗?你可以选择不把指针最为返回值,而作为一个参数。

论坛徽章:
0
3 [报告]
发表于 2006-10-19 21:37 |只看该作者
我指的是当函数返回后那个数组实际上应该就会被回收了吧~

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2006-10-19 22:17 |只看该作者
在c语言里,函数的返回类型不能为数组。

论坛徽章:
0
5 [报告]
发表于 2006-10-19 22:36 |只看该作者
但是可以用typedef定义一个数组指针然后返回这种指针

论坛徽章:
0
6 [报告]
发表于 2006-10-20 00:28 |只看该作者
将数组放在struct里面,返回这个struct的值就可以返回整个数组的值了,而不是数组的首地址,不必担心数组是否被释放。
不过你要考虑代价,数组的大小是你考虑是否值得这么做的因素。

[ 本帖最后由 seeLnd 于 2006-10-20 00:30 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2006-10-20 08:06 |只看该作者
可以在函数里定义一个静态数组,例如:


  1. char *xxx()
  2. {
  3. ...
  4. static char s1[1024];
  5. ...
  6. return(s1);
  7. }
复制代码

论坛徽章:
0
8 [报告]
发表于 2006-10-20 09:40 |只看该作者
原帖由 jjj346 于 2006-10-19 20:42 发表
首先想知道一下返回一个数组有没有意义,如果答案是肯定的话,我想知道怎么返回,
我刚开始时的方法是创建一个临时数组,使用完后再返回,但是这样返回的是一个临时变量,不安全,所以想知道有没有好的方法,
如 ...


返回指针不是挺好的么,我学得那是你的感觉问题

论坛徽章:
0
9 [报告]
发表于 2006-10-20 12:16 |只看该作者
一般来说数组不用返回值,而是直接作为函数的参数,在函数里面直接修改它。比如

void get_sorted(int array[], int len);

论坛徽章:
0
10 [报告]
发表于 2006-10-20 12:33 |只看该作者

  1. typedef struct int_array_st {
  2.     int *array;
  3.     int size;
  4. } my_int_array_t;

  5. int
  6. a_heap_array(my_int_array_t *a)
  7. {
  8.     a->size=1234;
  9.     a->array=(int*)malloc(sizeof(int)*(a->size));
  10.     if (a->array==NULL) {
  11.         return -1;
  12.     }
  13.     return 0;
  14. }

  15. int
  16. main()
  17. {
  18.     my_int_array_t ar;
  19.     int ret;

  20.     ret=a_heap_array(&ar);
  21.     ...
  22. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP