C++中变量做数组长度
2023-09-11 14:16:51 时间
在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释放内存,不然会有内存泄露问题。
相关文章
- [c++菜鸟]《Accelerate C++》读书笔记
- c++中,可以用类名直接访问非静态成员函数?
- 使用c++filt命令还原C++编译后的函数名
- 《易学C++(第2版)》——1.2 程序设计要做什么
- 《C++面向对象高效编程(第2版)》——1.4 理解消息、方法和实例变量
- 《C++面向对象高效编程(第2版)》——1.5 什么可以作为类
- 《好学的C++程序设计》——2.4 对数据变量怎样保护
- 从零入门激光SLAM(四)——ROS C++编译基础
- 文件是什么?文件是数据(字节)流的抽象-为什么C++中会把文件操作抽象为fstream?
- C/C++变量命名规则
- 理清gcc、libc、libstdc++的关系(libstdc++是gcc搞的,libc++是llvm搞的,他们都是C++标准库的实现)
- C++基础之 成员变量初 始化赋值
- C++ | (struct)结构体变量作为函数参数调用的方法小结
- 45、【树和二叉树】Trie(前缀树/字典树)最大异或对(C/C++版)
- C++ 让控制台运行到最后按下回车键才结束的3种方法
- C++实现【通讯录】管理系统
- C++ 基础入门 之 注释 ( // 和 /**/ )/变量 /常量 ( #define 和 const )/关键字/标识符(变量名)命名规则
- C++ : 内联函数和引用变量
- C++ 用变量定义数组
- 教外篇(6):C++ qrencode 实现二维码生成
- C++ 变量的作用域与生命周期