首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于常量的一个异常——const.请大家教教小弟我,多谢了

2013-10-24 
关于常量的一个错误——const.......请大家教教我,,,谢谢了void count_sort(int* a,const int size_,const i

关于常量的一个错误——const.......请大家教教我,,,谢谢了

void count_sort(int* a,const int size_,const int k){
        int b[size_];
int c[k];
}

错误提示是:>c:\users\ya\desktop\professional_c++_12\professional_c++_12\计数排序.cpp(8): error C2057: 应输入常量表达式。。。。

可是我的size_和k明明就是常量啊。只不过是由参数传递过来的而已。。。,,,为什么呢?????
[解决办法]
需要编译时常量
template<int size_, int k>
void count_sort(int* a){
        int b[size_];
    int c[k];
}

[解决办法]
       int b[size_];
    int c[k];
这种形式无法在栈上动态分配空间的,得调用函数alloca才可以实现在栈上动态分配内存
[解决办法]
2L正解。
const是运行时常量。
如果你改成用define,编译时常值。 这就可以了。

[解决办法]
void count_sort(int* a,const int size_,const int k){
        int b[size_];
int c[k];
}

楼主,你这里的函数const,指的是const形参,即在函数中,不可改变此变量的值,但这里是按值传递的,所以函数调用传参时可以是const变量也可以不是const变量。故不能用来初始化数组。

热点排行