返回动态数组的函数

stbdly 2013-07-09 04:06:10
在C语言中如何让一个函数返回动态数组(数组长度可变)呢?
...全文
240 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LubinLew 2013-07-09
  • 打赏
  • 举报
回复
C99虽支持可变数组,但是这个可变只是指在运行了指定一个确定长度. 而不是一会儿有3个元素,过一会又改成6个元素 C是不支持动态数组的,动态数组是C++的vector吧(C++不熟) C+只能用像楼上的malloc了,想要改变大小再用realloc
正在无聊中 2013-07-09
  • 打赏
  • 举报
回复
定义:

//C++
template<typename T>
T *get_array(int length)
{
 return new T[length];
}
/* C */
#include<stdlib.h>
void *get_array(int typesize, int length)
{
 return malloc(typesize * length);
}
使用(以int p[100]为例):

//C++
int *p = get_array<int>(100);
//C
int *p = (int *) get_array(sizeof(int), 100);
mujiok2003 2013-07-09
  • 打赏
  • 举报
回复
mock一下

struct A
{
  int sz;
  double data[1];
};

A* foo(unsigned int sz)
{
   if(!sz) sz = 1;
   A* p =  (A*)malloc(sizeof(A) + sizeof(double) * (sz-1));
   if(p) p->sz = sz;
   return p;
}
自信男孩 2013-07-09
  • 打赏
  • 举报
回复
在C语言中没有动态的可变的数组,一个动态数组一旦定义了(申请了空间)其大小就是确定的。
qzf362269994 2013-07-09
  • 打赏
  • 举报
回复
一般要“返回数组”的函数都会使用动态内存分配(malloc)来开辟一段连续的空间,然后把这个内存段的首地址返回
www_adintr_com 2013-07-09
  • 打赏
  • 举报
回复
C 的话 return (XXX*)malloc(sizeof(XXX) * n); 外面注意 free 返回值.
www_adintr_com 2013-07-09
  • 打赏
  • 举报
回复
return new XXX[n]; 外面注意 delete[] 返回值.

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧