| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 415 人关注过本帖
标题:const 创建的常量为什么不能用来指定数组大小?
只看楼主 加入收藏
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
结帖率:95.24%
收藏
已结贴  问题点数:20 回复次数:7 
const 创建的常量为什么不能用来指定数组大小?
书中说的无效不明白为什么,用下面代码试也没出现什么问题,从在网上查的结果只知道const 和 #define有区别,也没从区别中看出为什么无效? 求指教
书本内容:(c primer plus 第十六章C预处理和C库 449页)
        #define LIMIT 20
        const int LIM = 5;
    static int datal[LIMIT];        //合法
    static int data2[LIM];          //无效
    const int LIM2 = 2 * LIMIT;     //合法
    const int LIM3 = 2 * LIM;       //无效


程序代码:
#include <stdio.h>
#define LIMIT 20

int main(void)
{
    const int LIM = 5;
    static int datal[LIMIT];
    static int data2[LIM];
    const int LIM2 = 2 * LIMIT;
    const int LIM3 = 2 * LIM;
    printf("LIM2 = %d    LIM3 = %d\n", LIM2, LIM3);

    for (int i = 0; i < LIM; i++){
        data2[i] = i + 2;
        printf("data2[%d] = %d\n", i, data2[i]);
    }

    return 0;
}
/*
VC2013运行结果:
---------------------
LIM2 = 40       LIM3 = 10
data2[0] = 2
data2[1] = 3
data2[2] = 4
data2[3] = 5
data2[4] = 6
请按任意键继续. . .
---------------------
*/
搜索更多相关主题的帖子: color 网上 
2015-03-25 18:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
看那麽多舊書有什麽用

授人以渔,不授人以鱼。
2015-03-25 18:46
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:0 
回复 2楼 TonyDeng
也就是说现在这样做是没问题的,书上写的是以前的情况。
看了一下书是2005年第1版,确实有点旧,先不管了,继续往下看,还有二章就看完了。

人有多懒,编程就有多难。
2015-03-25 19:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
C舊標準是不可以,但C99之後可以,沿用C89標準的編譯器不通過。而在C++編譯器中,是一向就可以。你用的是C++編譯器,哪怕是再舊,也沒問題,但千萬別像某些人那樣食古不化,用C++編譯器强制爲C,那種人讀書讀成這樣,趁早別入這行了。

授人以渔,不授人以鱼。
2015-03-25 19:22
孤独的守候
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:32
注 册:2015-3-25
收藏
得分:0 
回复 3楼 TAAAAB
05年的书就别看了~
说真的,别浪费那个时间,很多标准都变了~
书不在于多而在于精~
当然如果你不相信我,那当我没说就是了~

欢迎大家与我一起探讨实时渲染技术~~
2015-03-25 20:36
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:0 
回复 4楼 TonyDeng
懂了,谢谢指教

人有多懒,编程就有多难。
2015-03-25 22:42
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:0 
回复 5楼 孤独的守候
完全零基础,很多书看不懂。先把这本看完吧。我可能是有时太纠结了,其实很多问题是要慢慢积累的

人有多懒,编程就有多难。
2015-03-25 22:47
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:0 
const 在C++中,有可能为 编译期常量
比如 const int a = 5; a为编译期常量
int x;
scanf( "%d", &x );
const int a = x; a不是编译期常量

const 在C中,都不是编译期常量,而只是“read only 只读”
2015-03-26 09:55
快速回复:const 创建的常量为什么不能用来指定数组大小?
数据加载中...
 
   



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

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