声明动态大小的数组

julyclyde 2004-04-04 12:30:21
int t;
scanf("%d",&t);
int array[t];
居然能运行!!!
编译器:gcc/mingw 3.2
...全文
78 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
julyclyde 2004-04-12
  • 打赏
  • 举报
回复
哦。明白了。
加分
Garriot 2004-04-12
  • 打赏
  • 举报
回复
malloc和new当然不会被淘汰。因为C的动态数组并不像VB里的那么灵活,它在第一次声明以后就不可以再改变了。也就是说你可以在任何一个地方int array[t];,整个程序但只能int array[t];一次
julyclyde 2004-04-11
  • 打赏
  • 举报
回复
是不是 malloc和new可以淘汰了?
Andy84920 2004-04-10
  • 打赏
  • 举报
回复
这是C99标准啦..
GCC符合标准(在这里)
bshaozi 2004-04-10
  • 打赏
  • 举报
回复
heuristic 2004-04-10
  • 打赏
  • 举报
回复
悔^^^^^^

昨天正对这个问题感到郁闷呢,后来用malloc解决的

5420 2004-04-10
  • 打赏
  • 举报
回复
我也觉得不行,至少你只能在一个程序对它赋一次值
julyclyde 2004-04-10
  • 打赏
  • 举报
回复
这样的话,我们还要new/malloc/calloc干什么?
fireinsky 2004-04-08
  • 打赏
  • 举报
回复
如果这样用:
const int t;
scanf("%d",&t);
int array[t];

就更正确了,是可以进行的,标准C++中是允许的,许多编译器也支持!
Kingxinyu 2004-04-08
  • 打赏
  • 举报
回复
关注 c99
zhangfjj 2004-04-07
  • 打赏
  • 举报
回复
顺便说一下,楼主的名字很牛呀!
zhangfjj 2004-04-07
  • 打赏
  • 举报
回复
对,这是新标准。
Garriot 2004-04-07
  • 打赏
  • 举报
回复
“C99中,用户可以声明一个数组,其维数由任一有效的整型表达式确定,包括那些只在运行时才知道的表达式。这被称为变长数组(VLA)。但是,只有本地数组(也就是说,在块范围或原型范围内)才可以变长。”-------------《C语言大全》P189
“……在C99(以及C++)中……在首次使用之前,可以在块的任何位置声明变量。”————————《C语言大全》P13

差不多现在新版的编译器,如gcc3.3,都支持C99特性了,我想这是上述代码能通过编译的原因。
不知道这些编译器是否是完全支持C99?
autoegg 2004-04-07
  • 打赏
  • 举报
回复
这样做感觉不是很安全,还是用vector好了。
Garriot 2004-04-07
  • 打赏
  • 举报
回复
《The Complete Reference C》(Herbert Schildt) 中文版,电子工业出版社
peter9606 2004-04-07
  • 打赏
  • 举报
回复
Garriot(自由枪骑兵) 可以知道你的那个C大全 是从那里弄到的么?
shankeke 2004-04-07
  • 打赏
  • 举报
回复
楼住的名字,呵呵:)
其实我用GCC感觉规范满严的,这可能是特例吧:)
julyclyde 2004-04-06
  • 打赏
  • 举报
回复
关注
great_chenliang 2004-04-05
  • 打赏
  • 举报
回复
3.x启连sizeof都是运行时求值了呢,即使-std=c89
moswawa 2004-04-05
  • 打赏
  • 举报
回复
标准?
难道不是ANSI 的C是最标准的吗?
加载更多回复(6)

69,382

社区成员

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

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