c++中的变量做数组长度

在c++中时不支持变量作为数组长度参数的,如 int n=10;byte bs[n];   这样写会提示编译错误”表达式必须含有常量值“。

虽然用变量声明数组大小会报编译错误,但是可以通过指针来动态申请空间实现动数组长度的变量赋值,写法如下:

1 int length = 10;
2 int * varArray;
3 varArray = new int[length];

这样varArray就可以当做数组来用了,这个数组的长度可以在程序运行时由计算得来。如果是普通的数组如int is[10] 编译时必须能确定数组长度,不然会报编译错误,这样灵活性受限比较大。我想这个就是new的存在原因之一吧,在栈中分配的内存,大小都是编译时就确定好的,如果想在运行时来动态计算使用内存的大小的话,就要用new这样的动态分配函数,来达到更高的灵活性。

可以自己声明一个结构体,来代表这个指针实现的数组,这样可读性会高点,用起来也方便点。

注意:c++ 用new分配空间以后,不用的时候要记得delete释放内存,不然会有内存泄露问题。

posted @ 2012-12-11 10:30  fff8965  阅读(17371)  评论(0编辑  收藏  举报