zoukankan      html  css  js  c++  java
  • C++中变量做数组长度

    在Java中,这是完全可以的,比如我们运行如下程序:

    package cn.darrenchan.storm;
    
    import java.util.Arrays;
    
    public class Test {
        public static void main(String[] args) {
            int num = 5;
            int[] array = new int[num];
            System.out.println(Arrays.toString(array));
        }
    }

    输出结果为:[0, 0, 0, 0, 0]

    但是在C++中则不然,在c++中是不支持变量作为数组长度参数的,如 int num=10;int array[num];  

    这样写会提示编译错误"表达式必须含有常量值"。C++ Primer这本书中也确实这么写的,用VS编程编译也会报错,但是用codeblocks就不会,而且结果正确,还是不太明白原因。

    但是我想实现类似的效果怎么办?

    可以通过指针来动态申请空间实现动数组长度的变量赋值,写法如下:

    int num= 10;
    int *array;
    array = new int[num];

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

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

  • 相关阅读:
    Oracle 实现数据表插入时主键列自增
    Java BigDecimal 加减乘除用法
    php最常见最经典的算法题(1)
    2、php-选择排序方法
    1、php-冒泡排序方法
    65G-一系列Go语言课程Go基础知识高级Go项目战斗New Go语言和区块链开发实践课程
    css
    python基础
    SEO优化指南
    转载GXT之旅
  • 原文地址:https://www.cnblogs.com/DarrenChan/p/7122973.html
Copyright © 2011-2022 走看看