读书人

这样定义数组烦什么不行呢?多谢

发布时间: 2012-11-10 10:48:50 作者: rapoo

这样定义数组烦什么不行呢?谢谢!

C/C++ code
const int arrSize1 = x + y;const int arrSize2 = y + z;int arr1[arrSzie1];int arr2[arrSize2];

代码如上,arrSize1是常量啊,为什么还不行呢?难道非要用指针吗?像这样
C/C++ code
int *parr = new int [arrSize1];


[解决办法]
arrSize1是常量啊?

谁说是常量的。X Y确定么?
[解决办法]
x和y换个马甲还是一个变量啊
[解决办法]
你这个是在运行的时候才能确定具体的值
[解决办法]
const定义的只读变量在程序运行过程中只有一份copy,因为他是全局的只读变量,放在静态区。#define 宏实在预编译阶段进行替换,const修饰的只读变量是在编译时确定其值。

[解决办法]
new 出来的东西,是在运行时确定大小,因此常量变量无所谓,但数组这个东西,编译器需要在编译时就确定大小,const int a 运行时大小固定,但编译时,编译器不能确定大小。
[解决办法]
数组的长度要在编译期确定。不能确定就动态分配或者用容器

读书人网 >C++

热点推荐