| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 556 人关注过本帖
标题:对于谭浩强C语言书上的一个问题
只看楼主 加入收藏
msl12
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2015-2-6
结帖率:25%
收藏
 问题点数:0 回复次数:9 
对于谭浩强C语言书上的一个问题
书上写:“如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或非常量表达式。如:
void func(int n)
{
  int a[2*n];
  ......
}


我试了下,n通过实参得到主函数的一个值,这样子创建数组好像不可行,我还想着能创一个由客户决定的长度的数组。。到底可以不可以呢?
搜索更多相关主题的帖子: C语言 表达式 
2015-03-17 10:08
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
C99是允许的 如果用支持C99的编译器 这个代码是没问题的
2015-03-17 10:53
lcy1990
Rank: 1
等 级:新手上路
帖 子:4
专家分:8
注 册:2015-3-17
收藏
得分:0 
应该是定义数组用num[5]的时候会有分配一段指针空间吧!这样用参数就编译不通过。。


[ 本帖最后由 lcy1990 于 2015-3-17 12:30 编辑 ]
2015-03-17 11:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
C99標準有這種用法,C11修正了把它作爲可選項,亦即跟以前C89一樣可以不提供。叫老譚改課本吧。

授人以渔,不授人以鱼。
2015-03-17 11:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
《C++ Primer》第五版,是根據C++11標準編寫的,我看了一下,數組部分還是强調須用常量表達式聲明和定義數組,亦即C++始終不鳥VLA。非要用C的就儘管養成那種習慣吧,不妨礙別人的愛好自由。

授人以渔,不授人以鱼。
2015-03-17 11:26
msl12
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2015-2-6
收藏
得分:0 
回复 5楼 TonyDeng
嗯,原来如此
2015-03-17 17:03
swchvs
Rank: 2
等 级:论坛游民
威 望:2
帖 子:53
专家分:81
注 册:2015-2-21
收藏
得分:0 
数组还可以这样定义么
2015-03-17 21:28
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
收藏
得分:0 
我的理解是:定义的一个数组的长度须是一个确定的值,但是在函数(main除外)里值传参后数组长度就定了。

但是我试了一下:
-----------------------------
# include <stdio.h>
int main(void)
{
    int n;
    scanf("%d",&n);
    int a[n];
    return 0;
}
-----------------------------

编译运行都通过。新标准允许吧。

你的问题可以用动态内存分配来解决比较好吧

你醒了?快起来敲代码!!
2015-03-17 21:53
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
回复 5楼 TonyDeng
C99好像有提到,数组定义还可以用变量,例如:
int b;
int a[b];    //这好像在C99才行的。

回复错了,呵呵,回复楼上的 -_-!!
2015-03-17 22:56
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
想用C89就只能malloc一个数组

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2015-03-19 14:50
快速回复:对于谭浩强C语言书上的一个问题
数据加载中...
 
   



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

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