请选择 进入手机版 | 继续访问电脑版
贠老师培训群:150322713    贠老师QQ:767708506

贠老师office培训-excel学习网

 找回密码
 立即注册
点击咨询贠老师
查看: 112|回复: 7

[C语言] 为什么用const说明的常量不能用来定义一个数组的初始大小?

[复制链接]

3172

主题

3269

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
22691
发表于 2015-12-28 10:12:00 | 显示全部楼层 |阅读模式
并不是所有的常量都可以用来定义一个数组的初始大小,在C程序中,只有C语言的常量表达式才能用来定义一个数组的初始大小。然而,在C++中,情况有所不同。

一个常量表达式的值在程序运行期间是不变的,并且是编译程序能计算出来的一个值。在定义数组的大小时,你必须使用常量表达式,例如,你可以使用数字:
    char    a[512];
或者使用一个预定义的常量标识符:
    #define MAX    512
    /*...  */
    char    a[MAX];
或者使用一个sizeof表达式:
    char  a[sizeof(structcacheObject)];
或者使用一个由常量表达式组成的表达式:
    char    buf[sizeof(struct cacheObject) *MAX];
或者使用枚举常量。

在C中,一个初始化了的constint变量并不是一个常量表达式:
    int    max=512;    /* not a constant expression in C */
    char  buffer[max];  /* notvalid C */
然而,在C++中,用const int变量定义数组的大小是完全合法的,并且是C++所推荐的。尽管这会增加C++编译程序的负担(即跟踪const int变量的值),而C编译程序没有这种负担,但这也使C++程序摆脱了对C预处理程序的依赖。
回复

使用道具 举报

1

主题

894

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2016-1-21 21:05:19 | 显示全部楼层
很不错的帖子,又学到了,力挺
回复 支持 反对

使用道具 举报

3

主题

986

帖子

67

积分

注册会员

Rank: 2

积分
67
发表于 2016-1-24 18:10:10 | 显示全部楼层
不错,学习了
回复 支持 反对

使用道具 举报

0

主题

944

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2016-2-19 22:30:23 | 显示全部楼层
很不错的帖子,又学到了,力挺
回复 支持 反对

使用道具 举报

3

主题

986

帖子

67

积分

注册会员

Rank: 2

积分
67
发表于 2016-2-20 11:05:34 | 显示全部楼层
佩服你,能发这么好的帖子,厉害
回复 支持 反对

使用道具 举报

1

主题

851

帖子

7

积分

注册会员

Rank: 2

积分
7
发表于 2016-2-21 19:16:50 | 显示全部楼层
先收藏再学习,谢谢啦!
回复 支持 反对

使用道具 举报

0

主题

903

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2016-11-2 21:59:29 | 显示全部楼层
楼主是好人哪,感谢分享,太棒了!
回复 支持 反对

使用道具 举报

2

主题

1048

帖子

156

积分

注册会员

Rank: 2

积分
156
发表于 2018-11-1 10:20:36 | 显示全部楼层
赞赞
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



陕ICP备15003731号  

贠老师培训 GMT+8, 2018-11-21 02:40 , Processed in 0.224773 second(s), 29 queries .

快速回复 返回顶部 返回列表