游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4177|回复: 9

关于 const 问题

[复制链接]

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
发表于 2007-11-1 23:08:00 | 显示全部楼层 |阅读模式
试验如下
main.cpp文件内容
--------------------------------------------------------
void main()
{
        int b = 3;
        const int a = b *4;
        float array[a];
}
---------------------------------------------------------
错误信息:
e:\我的工作空间\临时试验区\main.cpp(7) : error C2057: 应输入常数表达式
e:\我的工作空间\临时试验区\main.cpp(7) : error C2466: 不能分配常数大小为 0 的数组
e:\我的工作空间\临时试验区\main.cpp(7) : error C2133: “array” : 未知的大小

难道 这样a就不是常量了吗???
如果我申请的数组大小一定和a有关,该怎么解决?

6

主题

65

帖子

67

积分

注册会员

Rank: 2

积分
67
发表于 2007-11-2 00:14:00 | 显示全部楼层

Re:关于 const 问题

是因为编译的时候并不知道a的大小吧。
你换成const int a = 12试一下。

14

主题

48

帖子

54

积分

注册会员

Rank: 2

积分
54
QQ
发表于 2007-11-2 01:10:00 | 显示全部楼层

Re: 关于 const 问题

呵呵 ,这样是不行滴。。。
动态分配吧,

int n;
int* array;


n = 12;
a = new int[n];

18

主题

82

帖子

86

积分

注册会员

Rank: 2

积分
86
发表于 2007-11-2 19:53:00 | 显示全部楼层

Re:关于 const 问题

这样是不行的,数组的大小不能是 直到运行时刻才知道其值的const变量 以及 非const 变量, 而只能由整型字面常量,枚举变量,或者由常量表达式初始化的const int 变量

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2007-11-6 09:46:00 | 显示全部楼层

Re:关于 const 问题

int b = 3;                    <===non const
const int a = b *4;           <===const
而a依赖于b
所以要么给b加上const
要么a去掉const

3

主题

101

帖子

101

积分

注册会员

Rank: 2

积分
101
发表于 2009-9-28 12:26:00 | 显示全部楼层

Re:关于 const 问题

应该是数组的问题, 不是const的问题!

数组相似结构(进化),编译器需要知道结构大小,
在生成时会写入相应的数据,
运行期会自动分配与释放.
比如,可以用sizeof(得到大小).
数组相似指针(退化), 也可以使该指针指向到某位置.
但不能用sizeof(得到大小).

0

主题

19

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2009-10-5 00:13:00 | 显示全部楼层

Re:关于 const 问题

很明显,高手们都没出招!

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2009-10-5 06:34:00 | 显示全部楼层

Re:关于 const 问题

动态分配吧

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2009-10-17 10:14:00 | 显示全部楼层

Re:关于 const 问题

e:\我的工作空间\临时试验区\main.cpp(7) : error C2057: 应输入常数表达式
e:\我的工作空间\临时试验区\main.cpp(7) : error C2466: 不能分配常数大小为 0 的数组
e:\我的工作空间\临时试验区\main.cpp(7) : error C2133: “array” : 未知的大小
这不写着了么,应输入常数表达式,常数常数,不是常量
应该动态分配 new int[a]

4

主题

212

帖子

212

积分

中级会员

Rank: 3Rank: 3

积分
212
发表于 2009-11-7 15:51:00 | 显示全部楼层

Re:关于 const 问题

就分析下前两行
int b = 3;
const int a = b *4;
b是一个变量,存储在栈中.
const int a  
a是一个常量,不能用一个变量赋值,你应该去常量区里面拉一个数字给它赋值.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-18 05:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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