求助:如何在c++中实现可变长数组的操作?

fengbingchun
博客专家认证
2012-09-26 04:05:11
如下:
void main()
{
int a = fun();//通过调用函数fun来取的a的值;

int arr[a];
}

我如何才能实现上面类似的操作呢?在GCC中,以上语句是可以正常编译通过的。
谢谢,望高手指点!
...全文
253 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yisikaipu 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]int arr[a];[/Quote]

这是C99特性,C++标准不支持
taodm 2012-09-26
  • 打赏
  • 举报
回复
楼主,既然你学C++了,就直接vector吧,别折腾了
图灵狗 2012-09-26
  • 打赏
  • 举报
回复
除了开辟数组之外,struct aa本身也是需要分配空间的,另外bb函数用一级指针就好。
fengbingchun 2012-09-26
  • 打赏
  • 举报
回复
其中一个简单的实现了。
还有一个复杂的:
例如:
struct aa *pAA = NULL;

pAA = new struct aa[a];

假如有一个函数:
bb(struct **);

那么,
for(int i=0; i<a; i++)
bb(&pAA[i]);错误,改如何修改呢?
谢谢!
图灵狗 2012-09-26
  • 打赏
  • 举报
回复
用STL中的vector容器是最好的选择,直接int arr[a]这样的话,就算编译可以通过,其结果也是不可预料的,目前尚无明确的说法和结论。
fengbingchun 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 6 楼 的回复:

引用 4 楼 的回复:

用vector<int>...


谢谢!如果是复杂的结构体指针呢



结构体指针的长度也可以用new进行动态分配,但是new完之后就不能再改变这个长度的值了。如果在后续有需要改变这个长度的话,建议用STL库的vector。比如你自定义结构体类型为class type{}; 那么可以vector<type>
===……
[/Quote]

谢谢!
zhaoZero41 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 4 楼 的回复:

用vector<int>...


谢谢!如果是复杂的结构体指针呢
[/Quote]


结构体指针的长度也可以用new进行动态分配,但是new完之后就不能再改变这个长度的值了。如果在后续有需要改变这个长度的话,建议用STL库的vector。比如你自定义结构体类型为class type{}; 那么可以vector<type>
===================================================
我也变成复制粘贴党了
fengbingchun 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

用vector<int>...
[/Quote]

谢谢!如果是复杂的结构体指针呢
fengbingchun 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

还开了两个贴,有分!
[/Quote]

哈哈,不是,浏览器出问题了
  • 打赏
  • 举报
回复
用vector<int>...
fengbingchun 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

int *arr = new int[a];
[/Quote]

谢谢!
dhdahai 2012-09-26
  • 打赏
  • 举报
回复
还开了两个贴,有分!
zhaoZero41 2012-09-26
  • 打赏
  • 举报
回复
int *arr = new int[a];

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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