| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 687 人关注过本帖
标题:数组定义
只看楼主 加入收藏
流星于飞
Rank: 1
等 级:新手上路
帖 子:6
专家分:3
注 册:2013-5-10
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:13 
数组定义
定义一个一维数组a[i],i是变量由前面函数计算得出,用const int将i转换,定义有错,请问解决方法.
2014-07-15 16:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
用动态申请内存分配

授人以渔,不授人以鱼。
2014-07-15 16:25
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:0 
将i的值作为参数传入另一个函数中,在这个传入参数的函数就能够定义

坚持----------------------------------唯一的道路
shit ! ! !
2014-07-15 16:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用wssy213在2014-7-15 16:47:00的发言:

将i的值作为参数传入另一个函数中,在这个传入参数的函数就能够定义


你试过?

授人以渔,不授人以鱼。
2014-07-15 18:11
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
按版主的方法吧,呵呵

梦想拥有一台龙芯3A-4000
2014-07-15 23:09
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:1 
实践证明    我错了......
究其原因,是因为我在谭浩强的书上看到这么一段话:
说明:如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或非常量表达式。如:
void (int n)
{
    int a[2*n];        //合法,n的值从实参传来
    .....
}
在调用func函数时,形参n从实参得到值。这种情况称为"可变长数组",允许在每次调用func函数时,n有不同的值。但在执行过程中,n的值是不变的,数组长度是固定的。
---------------------------------------------------------------------------
当初我看的时候,看到这一段话,并没有太过在意,也没有上机实践过。基于我对他这一段话字面上的意思的理解,所以就出现了上面的那一句话  = =|| (三思而后言啊)
这里的矛盾,是我没理解透这一段话的意思,还是,这本书的错误呢? 还望T版解惑

坚持----------------------------------唯一的道路
shit ! ! !
2014-07-15 23:12
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:0 
回复 5 楼 ditg
确实是错了......  = =

坚持----------------------------------唯一的道路
shit ! ! !
2014-07-15 23:15
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
其实也不能说错,的确有可变长数组的概念,但目前只是部分编译器支持,呵呵

梦想拥有一台龙芯3A-4000
2014-07-15 23:32
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
版主那个是通吃法,呵呵

梦想拥有一台龙芯3A-4000
2014-07-15 23:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用wssy213在2014-7-15 23:12:01的发言:

实践证明    我错了......
究其原因,是因为我在谭浩强的书上看到这么一段话:
说明:如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或非常量表达式。如:
void (int n)
{
    int a[2*n];        //合法,n的值从实参传来
    .....
}
在调用func函数时,形参n从实参得到值。这种情况称为"可变长数组",允许在每次调用func函数时,n有不同的值。但在执行过程中,n的值是不变的,数组长度是固定的。
---------------------------------------------------------------------------
当初我看的时候,看到这一段话,并没有太过在意,也没有上机实践过。基于我对他这一段话字面上的意思的理解,所以就出现了上面的那一句话  = =|| (三思而后言啊)
这里的矛盾,是我没理解透这一段话的意思,还是,这本书的错误呢? 还望T版解惑


这是gcc编译器较早前做的非标准扩展,后来成了c99标准。但不是所有编译器供应商都同意这种做法。你参考一下我置顶的《关于C标准》,标准委员会对标准所起作用的解释:标准只是一个供需双方的协议,当一方不愿意遵守时,协议就无效。所谓一方,包括供方和需方,有时有些程序员是不愿意遵守某些标准的,只要他所使用的编译器支持,就完全可以无视标准(正如gcc当初所作的非标准扩展一样,它是强盗坐了江山立法律),因为他衡量过不需要编译器间的移植。当年TC/BC盛行,它的非标准扩展就特别多(那个时候公认的兼容性最好的编译器是MSC),但并不影响它的流行,以致其非标准库和语法特色,到现在仍能在学校的教科书上看到——看看有多少人把TC视为纯C的就知道了。关于非标准扩展问题,仍然是那个置顶问答中有解释,不要以为可以写出绝对不用非标准扩展的程序,那是不可能的。所以,归结起来,标准只是一种建议而已,能守则守,不能守就不必固守。

授人以渔,不授人以鱼。
2014-07-16 10:49
快速回复:数组定义
数据加载中...
 
   



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

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