| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 868 人关注过本帖
标题:求教一个数组初始化的问题
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用embed_xuel在2013-12-3 20:15:58的发言:

在C99中提出了变长数组,即为VAL,意思是你可以用一个变量去代替数组的大小。
例如
int val = 5;         
int a[val];
变长数组中的变,也只是说你可以用变量去定义数组,但是变长数组的大小在创建后就是不变得,而且变长数组必须的自动的存储类。由于变长数组的限制太多了,很少人去使用他。

這種使用預先聲明的常變量定義數組的方法,在C89時代就已被很多編譯器支持,屬擴展支持(仿效C++的),後來才被C99吸收。一些舊式的編譯器,有時不支持這種定義方式,比如TC/BC之類,但用C++方式編譯的VC6卻可以(不使用.c後綴強制用C編譯即可)。同時,這個也不是VLA(所謂的動態數組),動態數組是編譯時編譯器完全無法推斷出維數的(即那是真正的變量,而不是常變量),要在運行時才獲得維數值的。像這種,實現已定義數值,編譯器編譯時就已經把數組的尺寸定下了,即使代碼在後來再修改原先的變量值,也不會再影響數組的尺寸,這其實是編譯器夠聰明的推斷行為,很早的編譯器就已經達到這種程度了,所以它們算是擴展,後來才成為標準。

題外話:所謂的標準其實原本就是不斷擴展而來,我從來不視標準為神聖不可侵犯之律條。

授人以渔,不授人以鱼。
2013-12-04 10:20
canyua
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-8-30
收藏
得分:0 
数组里面的数不应该是变量
2016-09-03 20:19
快速回复:求教一个数组初始化的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033106 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved