| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 736 人关注过本帖
标题:两个有关C99标准的问题
只看楼主 加入收藏
lyhlyhlyhboa
Rank: 2
来 自:西安电子科技大学
等 级:论坛游民
帖 子:60
专家分:23
注 册:2011-1-1
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:15 
两个有关C99标准的问题
1、对于C99中新引入的变长数组VLA,现在在哪些环境下是可以使用的?。普及了没有?。
2、好像是C99标准中没有硬性要求变量的定义一定要在代码块的开头?但是我在学校有的机子上又不允许这样做。大部分编译环境的处理方法是什么?
高手们麻烦说明下,然后给点建议是这么用还是不这么用。。。
搜索更多相关主题的帖子: 中新 
2013-01-09 21:50
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
变长数组 一般情况下用不到哦  
知道有那么回事就行了

DO IT YOURSELF !
2013-01-09 21:55
lyhlyhlyhboa
Rank: 2
来 自:西安电子科技大学
等 级:论坛游民
帖 子:60
专家分:23
注 册:2011-1-1
收藏
得分:0 
回复 2楼 wp231957
那如果不用动态存储管理,要实现通过输入来指定数组大小呢?比如说这一小段:
int n;
scanf("%d", &n);
int data[n];

这里把上头两个问题都涉及到了。在dev c++中是可以成功编译的,但在vc中好像不行。这里用到的算是变长数组吗?

不懈
2013-01-09 23:45
lyhlyhlyhboa
Rank: 2
来 自:西安电子科技大学
等 级:论坛游民
帖 子:60
专家分:23
注 册:2011-1-1
收藏
得分:0 
回复 2楼 wp231957
那如果不用动态存储管理,要实现通过输入来指定数组大小呢?比如说这一小段:
int n;
scanf("%d", &n);
int data[n];

这里把上头两个问题都涉及到了。在dev c++中是可以成功编译的,但在vc中好像不行。这里用到的算是变长数组吗?

不懈
2013-01-09 23:45
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:2 
1、现在很多编译器都支持C99了,微软的C编译器只支持C90,一个编译器支持哪些功能,还需要你看该编译器的说明文档。
2、C99不要求变量一定定义在块的开头。现在为了保证代码能在大多数编译器下使用,尽量把变量定义在块的开头。

My life is brilliant
2013-01-10 00:07
lyhlyhlyhboa
Rank: 2
来 自:西安电子科技大学
等 级:论坛游民
帖 子:60
专家分:23
注 册:2011-1-1
收藏
得分:0 
回复 5楼 lz1091914999
噢噢噢噢~大概明确了。。谢谢了
那对于我在上头4楼提到的那个问题。。麻烦再看下咯。。因为我们最近学完数组和指针不久,遇到的很多题都有这个要求。。thanks a lot~!

不懈
2013-01-10 00:31
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用lyhlyhlyhboa在2013-1-9 23:45:07的发言:

那如果不用动态存储管理,要实现通过输入来指定数组大小呢?比如说这一小段:
int n;
scanf("%d", &n);
int data[n];
 
这里把上头两个问题都涉及到了。在dev c++中是可以成功编译的,但在vc中好像不行。这里用到的算是变长数组吗?
定义一个足够大的数组比如 int data[10000]

DO IT YOURSELF !
2013-01-10 08:19
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
1、对于C99中新引入的变长数组VLA,现在在哪些环境下是可以使用的?。普及了没有?。
环境?你想问的是哪些编译器支持C99吧?主流的gcc、clang等都支持C99,而VC++系列都不支持
“普及”就不好说了,没有什么评判标准。

2、好像是C99标准中没有硬性要求变量的定义一定要在代码块的开头?但是我在学校有的机子上又不允许这样做。大部分编译环境的处理方法是什么?
对,不但是“没有硬性要求”,而且是不建议这么做。过去之所以做出如此规定,只是为了编译时的速度。
如果你的编译不允许这么做,那答案很显然:你的编译器不符合现在的C标准。

3、……在dev c++中是可以成功编译的,但在vc中好像不行。这里用到的算是变长数组吗?
DevCpp只是个IDE,不是编译器
所有版本的VC都不支持现在的C语言标准
当然算变长数组

题外话:
gcc 这个编译器主要是为GNU/linux服务的,带有很多自身的扩展,如果C标准和扩展行为有冲突,则其默认使用扩展语法。
所以,如果要想使用C99语法,编译参数需要加上-std=c99
2013-01-10 09:08
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3451
专家分:19340
注 册:2012-3-31
收藏
得分:1 
路过

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2013-01-10 09:22
lyhlyhlyhboa
Rank: 2
来 自:西安电子科技大学
等 级:论坛游民
帖 子:60
专家分:23
注 册:2011-1-1
收藏
得分:0 
回复 7楼 wp231957
只有这个方法阿?。

不懈
2013-01-10 10:06
快速回复:两个有关C99标准的问题
数据加载中...
 
   



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

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