为了账号安全,请及时绑定邮箱和手机立即绑定

C语言变长数组是否只能拥有自动存储期限?

C语言变长数组是否只能拥有自动存储期限?

HUX布斯 2019-04-21 20:39:45
rt,是不是变长数组只能拥有自动存储期限,而拥有静态存储期限的就不会被视为变长数组?e.g.:#includeintn=10;inta[n]={...};intmain(void){for(inti=0;i
查看完整描述

2 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

问题已经解决,感谢大家的回答!
脑子一抽写错了点————变长数组没法写初始化式。。。
另外,变长数组不能具有静态存储期限,因为它的长度是编译时决定的,而变长数组的长度要到运行时才能确定,所以只能是作为拥有自动存储期限的变量。
另外变长数组是C99新特性,不过vc比较拽一直懒得实现。
                            
查看完整回答
反对 回复 2019-04-21
?
冉冉说

TA贡献1877条经验 获得超1个赞

理论上这两种都是非法的。
但是后一种,如果去掉={...}的话编译器(部分编译器)是可以编译出正确的代码的。
原因是,第一中写法的数组是全局变量,他的空间是在程序运行初始化的时候分配的,这个时候n并不一定被初始化为一个确定的值。
后一种局部的数组是在程序运行到这一句的时候分配的,这个时候n是确定的值,所以程序知道分配多少空间。
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 518 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信